Python 教程阅读笔记(五):模块

模块是一个包含Python定义和语句的文件。文件名为模块名加上.py后缀

在模块内,模块名可由__name__变量引用。

使用import  module name来导入模块,这样就可使用模块内的所有函数了

函数调用使用 module.function 方式

每个模块都有其私有的符号表,在该模块中可被所有函数作为全局符号表使用

导入的其他方式:  from  modulename import funcname1,funcname2

而这种方式一般是不被推荐的,因为有屏蔽已定义函数的风险

每个模块只导入解释器会话一次,若模块改变,需要重启解释器,或者使用modulename.reload()

如果以python modulename.py  <args>运行模块 __name__会设置为__main__

因此可在结尾使用以下代码

if __name__ == "__main__":

import sys

     fib(int(sys.argv[1]))

这样处理后,模块文件就像脚本一样,可执行了

模块搜索路径:

1.输入脚本所在路径

2.PYTHONPATH环境变量对应的路径

注意脚本名不能与标准模块名重名

python 文件的编译:

1.-O 目前只移除assert语句,生成.pyo文件

2.-OO 目前只移除__doc__字符串

3..pyc或.pyo只是载入较快,而不是运行较快

4.当在命令行执行脚本时,不会生成.pyc或.pyo文件

5.可以有 .pyc而没有.py

6.compileall可创建.pyc文件 使用 –O生成 .pyo

dir()函数用来发现模块中包含有哪些函数,没有参数时,返回当前定义的名字

import sys

sys.ps1  主提示符

sys.ps2  副提示符

import builtins

dir(builtins)

包:用来封装模块,__init__.py用来让python把目录作为包含包

当使用from package import item,item可以是包中的子模块,或包中定义的其他名字,如函数,类,或变量。import语句先测试包中是否含有该item,若没有,就把它当做为是模块名,然后载入,如果无法找到,将会抛出ImportError异常

当使用import item.subitem.subsubitem,除了最后一个item每个item都必须是个包;最后一个item必须是模块或包,不能使类,函数或变量

from package import *  这会导入__all__变量对应的模块,否则不导入任何子模块,导入__init__中的所有名字,及之前显示用import导入的子模块

注意from Package import specific_submodule是推荐的方法

包内索引,可以使用from module import name,也可使用.,..,注意main模块必须使用绝对导入

from . import echo

from .. import formats

from ..filters import equalizer

__path__属性用来初始化包含多个包的目录名的列表

原文地址:https://www.cnblogs.com/westwind/p/2505568.html