记一下,每次都忘。

模块

python的单个.py文件就是一个模块。

导入模块类似于c的#include,但是又略有不同。模块中的代码会被运行,但是模块中定义的函数和类会被分到模块的命名空间上。也就是说,将print("导入模块")写在module.py,然后import module的时候会打印内容,但是module.py中定义的类和函数在用的时候需要module.foo()这样写上模块名加点的形式。

模块的私有函数和类名前面都有_开头。

可以用 __all__=['function_name', 'class_name'] 这种形式来显式的控制导出。

包是包含多个模块的文件夹,可以集中管理相关模块,在文件夹里面有一个__init__.py来代表这个文件夹是一个包。

在包的__init__.py中可以用__all__ = ['module1']这样来限制公开的模块,即便是from module import *也只会导入__all__中的模块。