在使用Python开发程序时,若是是比较复杂的功能,能够把功能分红几个部分,则须要用到Python的模块和包。html
模块
顾名思义,模块就是一块一块的代码。python
Python模块
在Python中一个py文件被认为是一个模块(module)。
web
导入模块
导入一个模块到当前模块,语法:微信
import_smt ::= "import" module ["as" name] ("," module ["as" name])* | "from" relative_module "import" identifier ["as" name] ("," identifier ["as" name])* |"from" relative_module "import" "(" identifier ["as" name] ("," identifier ["as" name])* ["," "]" |"from" module "import" "*"
- import_stmt表示
import
语句 - 双引号""标明的是关键字
- 方括号[]表示可选输入
- 竖线|表示或者
- 小括号()和星号*合在一块儿使用,表示能够为若干小括号里的内容
综上所述,import
语句有4种写法。ide
"import" module["as" name](","module["as"name])*
直接在import
后面加模块名字,而且名字可使用关键字as
自定义。
"from" relative_module "import" identifier["as" name] ("," identifier["as" name])
增长了from关键字
"from" relative_module "import" "("identifier ["as“ name](","identifier["as" name])*[","]")"
相似法二,只是在import后加上括号,对导入部分用原则进行特别说明。
"from" module "import" "*"
将一个模块下的全部成员都导入到当前模块。
查找模块
当import一个模块时,Python要去哪里查找模块文件呢?
Python查找模块有3步:svg
- 在当前目录种查找
- 若没有找到则从环境变量PYTHONPATH中查找
- 若仍没找到则到安装目录中查找
实际上要将查找目录的信息存放到sys模块的path变量中,能够打印改变了来查看Python的查找目录。
从查找顺序上看出,当前目录是第一优先查找,因此尽可能不要使用标准库中已存在的名字,避免Python使用该文件取代标准库的模块。优化
模块编译
Python执行程序实际上有一个些许你机制,当运行Pyhton模块文件时,Python会将后缀名为.py的模块文件编译成后缀名.pyc文件,实际解释执行编译以后的.pyc文件,相似Java,以此提升装载速度。url
除了编译成.pyc字节码文件外,向Python解释器传递两个-O参数(-OO)会生成优化的字节码.pyo文件。pyo文件比pyc文件装载速度更快,能够提升Python脚本启动速度。不过需注意的是,压缩的pyo文件删除了py文件里用来存放注释的__doc__
属性,因此用到__doc__
属性则不能使用该优化方法。spa
包
程序代码太多能够分红多个模块,而当模块太多能够组合成一个包。.net
(
插播反爬信息)博主CSDN地址:https://wzlodq.blog.csdn.net/
Python包
模块是一个Python文件,包是一组模块的集合,即包是放着若干Python文件的目录,而且该目录下有一个__init__.py
文件(包的初始化文件),能够在该文件里导入包里的全部Python模块。
- 建立包
- 添加模块
- 调用包
包的导入
包的导入和模块的导入语法规则同样,例如:
可是和模块导入不一样是第4种带星号的用法。
from mypackage import *
理想状况下会找出包的全部子模块并导入,但实际状况并不是如此。Python会在初始化文件里按照一个名为__all__
的列表,导入该列表给出的模块名。
好比定义__all__
列表:
__all__
能够看做是包的索引,在编写Python时,建议在__init__
.py文件明肯定义_-all__
列表。
内嵌包
对于功能更复杂的程序,能够用内嵌包,即一个大包套着若干子包,每一个子包又包含若干模块。
好比Python处理XML的标准库就包含了四个子包:
对于内嵌包的使用,另外注意的是在装载模块时要使用包和模块的全名,即指出是哪一个包的模块。如:
原创不易,请勿转载(
本不富裕的访问量雪上加霜)
博主首页:https://wzlodq.blog.csdn.net/
微信公众号:唔仄lo咚锵
若是文章对你有帮助,记得一键三连❤
本文同步分享在 博客“唔仄lo咚锵”(CSDN)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。