1.模块化
编程语言中,库、包、模块是用一种概念,是代码组织方式
Python只有一种模块对象类型,为了模块化组织模块的便利,提供了"包"的概念
模块module,指的是python的源代码文件
包package,指的是模块组织在一起的和包名同名的目录及其相关文件
2.导入语句
2.1 import
- import语句后面只能写到模块为止
In [1]: import functools.WRAPPER_UPDATES # import不能直接导入模块的属性
Traceback (most recent call last):
File "<ipython-input-1-c5aad56d0707>", line 1, in <module>
import functools.WRAPPER_UPDATES
ModuleNotFoundError: No module named 'functools.WRAPPER_UPDATES'; 'functools' is not a package
In [2]: import functools # 直接导入模块就可以
- 局部导入受作用域影响, 例如在函数中导入一个模块,相当于一个普通的局部变量
注意:局部作用域中变量在全局不可见(符合向外不可见,向内可见)
总结:
- 导入顶级模块,其名称会加入到本地名词空间中, 并绑定到模块对象
- 导入非顶级模块,只将其顶级模块名称加入到本地名词空间中。导入的模块必须使用完全限定名称来访问
- 使用的了as,本地只绑定as之后的名称,指代导入的全长限定名模块
In [1]: import os.path # 相当于导入了os和os.path,但是本地限定名只能看到顶级模块os
In