python3之模块

1.python3模块

简单讲,一个模块就是一个*.py文件,这个文件里面可以定义类,函数,变量,也可以包含可执行代码。

2.模块的引入

2.1import引入

import module1,[module2[,.........moduleN]]

一个模块只会被导入一次,不管执行了多少次import,这样可以防止导入模块被重复执行。

2.2from * import语句

from modname import name1,name2..........nameN
from mod import func_1

这个声明不会把整个mod模块导入到当前命名空间中,它只会将mod里的func_1单个引入到执行这个声明的模块的全局符号表。

from ... import * :这样会把模块中的所有内容导入到当前命名空间,一般不建议使用,消耗内存空间,也容易出现未预知的问题。

3.搜索路径

搜索顺序:当前目录->系统环境变量PATHONHOME->标准链接库目录
通过sys.path可查看搜索路径

>>> import sys
>>> sys.path
['', 'C:\\Python36\\python36.zip', 'C:\\Python36\\DLLs', 'C:\\Python36\\lib', 'C:\\Python36', 'C:\\Python36\\lib\\site-packages']

4.命名空间

变量是拥有匹配对象的名字(标识符)。命名空间是一个包含了变量名称(键)和它们各自相应的对象们(值)的字典。
函数内用到全局变量要用global语句,否则会当作局部变量处理

其他问题:

1.python模块里的可执行代码何时执行?
当导入模块时,python顶层的代码会执行一次,若要重新执行模块的顶层代码需要通道reload()函数
另外python3中的reload()需要从imp包中导入
2.关于python模块循环引入的问题?

参考资料

1.https://www.cnblogs.com/zhangxinqi/p/7905103.html