Python中module和package

模块(module)
包(package)

[b]模块的创建[/b]
创建一个可被重用的Python脚本文件,即创建了一个模块。模块名即为脚本的(无后缀)文件名。可用import <modname>导入模块。

[b]模块的属性[/b]
__name__ 对于导入的模块,与模块名相同。对于直接执行的模块,为"__main__"。可以用来区分模块是导入,还是直接执行的。

直接执行模块
if __name__ == "__main__":
import sys
print (sys.argv[0])


模块中可以包含变量、类、函数等定义,也可以包含语句。
模块中的语句在模块被导入时,执行一次。多次导入同一个模块时,这些语句不会重复执行。

模块有自己的命名空间。可以用from <modname> import <name>的方式,将模块内的名字,导入当前命名空间。


[b]模块的查找顺序[/b]
1、内建模块
2、sys.path变量:脚本当前路径;PYTHONPATH环境变量;依赖于安装的默认值

[b]编译后的Python文件[/b]
导入模块后,会生成.pyc文件。对应的.py文件的修改时间戳会记录在.pyc文件中。如果对应的.py文件被修改,.pyc将被重新生成。
.pyc文件仅加快载入速度,不会加快执行速度。
可以仅有.pyc文件,而没有.py文件。此时将直接载入.pyc文件。
可以用 -O选项,生成优化的.pyo文件。目前优化仅剔除断言。
可以用-OO选项,生成最优化的.pyo文件。此时会剔除模块的__doc__属性。使用时需确认程序中不会用到__doc__属性。
可以直接执行.pyc文件,或用优化选项执行.pyo文件。

[b]包(package)[/b]
可以将多个模块放在一个目录中,创建一个包。该目录中必须包含一个__init__.py文件,标识该目录为包。

导入时,除了最后一个部分,前面的部分必须是包,最后一个部份可以是模块或包,不能是变量、函数及类。

[b]包的属性[/b]
__all__ 该属性指定用 from <pkgname> import *时,导入的子模块、子包的名称。

包内的子模块相互导入时,优先导入同一个包中的模块。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值