<PY><core python programming笔记>C12 模块

来源:互联网 发布:足球教练考试软件 编辑:程序博客网 时间:2024/05/16 11:24


C12  模块

#模块用来组织Python代码,包用来组织模块,文件是模块的物理实现
#模块是命名空间,用句点‘.’来指示其空间内容

12.2搜索路径
可以用PYTHONPATH环境变量里查看修改
也可以修改.pth文件
包含.py .pyc .pyo的zip文件可以作为目录
>>>sys.path       #列写所有搜索路径
>>>sys.path.append('e:\\')  #添加路径
>>>del sys.path[-1]  #删除最后一个路径

12.3命名空间  namespace
局部名称空间
全局名称空间
内建名称空间(首先加载,由__builtins__集合,dir(__buitins__)可以查看)

12.4导入模块
import module1,module2
#推荐在开头就导入,且先导入标准库,再导入第三方库,最后自定义模块(作用域原则)
from module1 import name1  #这样可以直接使用name1而不是module1.name1
或者
from module1 import *      (不提倡,只在确实需要时,因为导入存在命名覆盖问题)
from Tkinter import (Tk,Frame,Button,Entry)

导入后可以重命名,以防混淆
n1=module1
n2=module1.name1

也可以边导入边重命名  from cgi import FieldStorage as form

12.5导入及内建特性
#导入就被执行,且执行了__name__,所以用__name=='__main__'做判断比较方便
#导入可以多次,加载只在最早的一次导入时
#特殊需要可以用导入函数 s=__import__('sys')
#可以reload(module1)

12.7包
Phone/
     __init__.py           #包的组织必须要有初始化py,可以为空
     common_util.py
     Voicedta/
          __init__.py
          Pots.py
          Isdn.py
      Fax/
          __init__.py
         G3.py
      Mobile/
           __init__.py
           Analog.py
/

导入方法
import Phone.Mobile.Analog
Phone.Mobile.Analog.dail()

from Phone.Moblie import Analog

#绝对导入可能导致标准库被覆盖,可以使用带句点的相对导入

12.8其他特性
#查看sys自动导入的模块用 sys.modules.keys()
#模块命名前加下划线可以阻止被 import *导入,但仍可以显式导入
#PYTHONCASEOK环境变量指定了导入区分大小写或不区分

在文件开头按如下方法指定编码
#  !usr/bin/env python
# -*-coding:UTF-8 -*-                #或者coding=Unicode

#把一些import放到内部阻止导入循环
#可以通过命令行、shell、execfile()、模块导入、解释器的-m选项等方法执行一个模块

12.9相关模块
imp
modulefinder
pkgutil
site

0 0