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模块循环引入的问题?