1.模块
自我包含并且具有组织的代码片段就是模块
2.模块和文件
如果说模块是按照逻辑来组织python代码的方法,那么文件便是物理层上组织模块的方法。因此,一个文件被看作是一个独立模块,一个模块也可以看作是一个文件。
搜索路径和路径搜索:sys.path sys.path.append(' ')
3.名称空间
名称空间是名称(标识符)到对象的映射。变量作用域指出了从用户代码的哪些物理变量可以访问到这些名字。
两个或三个名称空间。分别是:局部名称空间、全局名称空间、内建名称空间。局部是不断变化的
python解释器先加载内部名称空间,随后执行模块的全局名称空间。如果在执行期间内调用了一个函数,那么将创建出第三个名称空间,即局部名称空间。
python名称查找的时候,局部名称会覆盖全局,全局会覆盖局部
无限制的名称空间:可以在任何需要放置数据的地方获得一个名称空间
4.导入模块
import
核心风格:推荐所有的模块在python的开头部分导入,而且最好按照:python标准库模块
python第三方模块
应用程序自定义模块
from-import语句:在模块中导入指定的模块属性,也就是把指定名称导入当前作用域
不想使用导入的模块名称:import .... as....
5.模块导入的特性
import 和 load:一个模块只被加载一次,无论被导入多少次,阻止多从导入时代码被执行
导入到当前名称空间的名称:from module import var
from module import *
导入新特性:from_future_import .....
从zip文件中导入模块:import hook
6.模块内建函数
__import__
__import__(module_name[,globals[,local[,fromlist]]])
globals()和locals()内建函数分别返回调用者全局和局部名称空间的字典
7.包
包是一个有层次的文件目录结构,它定义了一个由模块和子包组成的Python应用程序执行环境
绝对导入和相对导入
8.模块的其他特性
阻止属性导入:不想导入的属性名称加上一个下划线(_)
12.10 练习
1. 路径搜索:模块的导入需要一个路径搜索的过程。即在文件系统“预定义区域”中查找文件。这区域是搜索路径的集合。路径搜索和搜索路径是2个不同的概念,搜索路径是查找某个文件的操作,后者是去查找一组目录
2.
a.import module module.foo()
from module import foo
b.import module是模块名被引入当前名称空间,foo()需要从模块名称空间调用
from import foo()被引入当前名称空间,可以直接使用
3
from module import*可以把指定模块所有名称导入到当前名称空间里面去
import module 只是模块被引入当前名称空间。需要使用属性/句点属性标识来访问
4.
名称空间是纯粹意义上的名字和对象之间的映射关系,而作用域还指出了用户代码的哪些物理位置可以
访问到这些名字。
5.
module=__import__('sys',formlist=['foo'])
foo=module.formlist