前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python模块和包-你还在全部写成一坨吗?

Python模块和包-你还在全部写成一坨吗?

作者头像
唔仄lo咚锵
发布2021-09-14 11:26:00
5990
发布2021-09-14 11:26:00
举报

文章目录

在使用Python开发程序时,如果是比较复杂的功能,可以把功能分成几个部分,则需要用到Python的模块和包。

在这里插入图片描述
在这里插入图片描述

模块


顾名思义,模块就是一块一块的代码。

Python模块


在Python中一个py文件被认为是一个模块(module)。

在这里插入图片描述
在这里插入图片描述

导入模块


导入一个模块到当前模块,语法:

代码语言:javascript
复制
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种写法。

  1. "import" module["as" name](","module["as"name])* 直接在import后面加模块名字,并且名字可以使用关键字as自定义。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
  1. "from" relative_module "import" identifier["as" name] ("," identifier["as" name]) 增加了from关键字
在这里插入图片描述
在这里插入图片描述
  1. "from" relative_module "import" "("identifier ["as“ name](","identifier["as" name])*[","]")" 类似法二,只是在import后加上括号,对导入部分用原则进行特别说明。
在这里插入图片描述
在这里插入图片描述
  1. "from" module "import" "*" 将一个模块下的所有成员都导入到当前模块。
在这里插入图片描述
在这里插入图片描述

查找模块


当import一个模块时,Python要去哪里查找模块文件呢? Python查找模块有3步:

  1. 在当前目录种查找
  2. 若没有找到则从环境变量PYTHONPATH中查找
  3. 若仍没找到则到安装目录中查找

实际上要将查找目录的信息存放到sys模块的path变量中,可以打印改变了来查看Python的查找目录。

在这里插入图片描述
在这里插入图片描述

从查找顺序上看出,当前目录是第一优先查找,所以尽量不要使用标准库中已存在的名字,避免Python使用该文件取代标准库的模块。

模块编译


Python执行程序实际上有一个些许你机制,当运行Pyhton模块文件时,Python会将后缀名为.py的模块文件编译成后缀名.pyc文件,实际解释执行编译之后的.pyc文件,类似Java,以此提高装载速度。

除了编译成.pyc字节码文件外,向Python解释器传递两个-O参数(-OO)会生成优化的字节码.pyo文件。pyo文件比pyc文件装载速度更快,可以提高Python脚本启动速度。不过需注意的是,压缩的pyo文件删除了py文件里用来存放注释的__doc__属性,所以用到__doc__属性则不能使用该优化方法。


程序代码太多可以分成多个模块,而当模块太多可以组合成一个包。

插播反爬信息 )博主CSDN地址:https://wzlodq.blog.csdn.net/

Python包


模块是一个Python文件,包是一组模块的集合,即包是放着若干Python文件的目录,并且该目录下有一个__init__.py文件(包的初始化文件),可以在该文件里导入包里的所有Python模块。

  1. 创建包
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
  1. 添加模块
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
  1. 调用包
在这里插入图片描述
在这里插入图片描述

包的导入


包的导入和模块的导入语法规则一样,例如:

在这里插入图片描述
在这里插入图片描述

但是和模块导入不同是第4种带星号的用法。 from mypackage import *理想情况下会找出包的所有子模块并导入,但实际情况并非如此。Python会在初始化文件里按照一个名为__all__的列表,导入该列表给出的模块名。

比如定义__all__列表:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

__all__可以看作是包的索引,在编写Python时,建议在__init__.py文件明确定义_-all__列表。

内嵌包


对于功能更复杂的程序,可以用内嵌包,即一个大包套着若干子包,每个子包又包含若干模块。 比如Python处理XML的标准库就包含了四个子包:

在这里插入图片描述
在这里插入图片描述

对于内嵌包的使用,另外注意的是在装载模块时要使用包和模块的全名,即指出是哪个包的模块。如:

在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-02-16 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 模块
    • Python模块
      • 导入模块
        • 查找模块
          • 模块编译
            • Python包
              • 包的导入
                • 内嵌包
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档