第九章 模块
- 模块就是python程序。废话
- python默认的模块加载路径由sys.path变量代表
~$ python
Python 2.7.14 (default, Sep 23 2017, 22:06:14)
[GCC 7.2.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys,pprint
>>> pprint.pprint(sys.path)
['',
'/usr/lib/python2.7',
'/usr/lib/python2.7/plat-x86_64-linux-gnu',
'/usr/lib/python2.7/lib-tk',
'/usr/lib/python2.7/lib-old',
'/usr/lib/python2.7/lib-dynload',
'/home/lsh/.local/lib/python2.7/site-packages',
'/usr/local/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages/gtk-2.0']
>>>
- 上面用的pprint可以代替普通的print函数,显示效果更友好。
- import f_module导入模块的本质:将f_module.py中的全部代码加载到内存并执行;然后将整个模块内容赋值给与模块同名的变量,该变量的类型是module,而在该模块中定义的所有程序单元都相当于该module对象的成员。
- from f_module import name, hello导入模块的本质:将f_module.py中的全部代码加载到内存并执行;然后只导入指定的变量、函数等成员单元,并不会将整个模块导入。
- 为了更好管理多个模块源文件,python提供了包的概念,包:(1)从物理上看,包就是一个文件夹,该文件夹下包含了一个__init__.py文件,该文件夹可以包含多个模块源文件;(2)从逻辑上看,包的本质依然是模块。
- 假设包fk_package包下,提供两个函数一个类,如arithmetic_chart,billing和print_shape三个模块,这三个模块就相当于fk_package包的成员。导入包下的print_shape模块的命令是:
import fk_package.print_shape
,这个的本质就是加载并执行fk_package包下的print_shape.py文件,并将其赋值给fk_package.print_shape变量。因此执行这条导入语句后,程序可访问fk_package\print_shape.py文件所定义的程序单元,但需要添加fk_package.billing前缀。 - 模块包含啥东东:(1)dir()函数查看;(2)使用模块本身的__all__变量。
- 使用__doc__属性查看文档,help()函数起作用就是因为这家伙毫不?
- 使用__file__属性查看模块的源文件路径。
- 如果你的代码组织成了多个文件夹,那导入的时候就是导入包了,这个时候一定要注意__init__.py文件,就是空的也行,否则你导入的时候就会出现:
ImportError: No module named blablabla