Python-模块与包

描述

模块

模块是Python 程序架构的一个核心概念

  • 模块好比是 ** 工具包** ,要想使用这个工具包中的工具,需要使用 **import **这个关键字进行导入这个工具包
  • 每一个以扩展名 **py **结尾的 Python 源代码文件都是一个 模块
  • 在模块中定义的 全局变量函数 都是模块能够提供给外界直接使用的工具

模块示例

先定义一个模块 cal.py ,里面一个add 方法和 reduce 方法,以及一个变量name

程序架构

在hello3.py 文件中调用刚创建的模块

程序架构

打印结果如下:

程序架构

**小结

**

  • 可以在一个 Python 文件中定义变量 或者函数,然后在 另外一个文件中使用 import 导入这个模块
  • 导入之后,使用 模块名.变量 / 模块名.函数 的方式,进行调用
  • **模块可以让代码方便的被 **复用

**模块名也是一个标识符

**

  • 标示符可以由 字母、下划线 和数字组成
  • 不能以数字开头
  • 不能与关键字重名

注意:如果在给 Python 文件起名时,以数字开头 是无法在 Pycharm 中导入这个模块的

**Pyc文件( c 指 compiled 编译过 的意思

**

  • 浏览程序目录会发现一个 pycache 的目录,目录下有一个** cal.cpython-38.pyc 文件, cpython-38** 表示Python解释器的版本
  • 这个** pyc 文件是由 Python 解释器将 模块的源码** 转换为** 字节码**
    • Python 这样保存 字节码 是作为一种启动 速度的优化

程序架构

程序架构

字节码

  • Python 在解释源程序时是分成两人步骤的
    • 首先处理源代码,编译生成一个二进制 字节码
    • 再对** 字节码 进行处理,才会生成 CPU **能够识别的 机器码
  • 有了模块的字节码文件之后,下一次运行程序时,如果在上次保存字节码之后 没有修改过源代码 Python 将会加载** .pyc**文件并跳过编译这个步骤
  • 如果又修改了源代码,下次程序运行时,字节码将自动重新创建

from ... import ...

模块提供了类似名字空间的限制,允许 Python 从模块中导入指定的符号(变量、函数、类等)到当前模块。导入后,这些符号就可以直接使用,而不需要前缀模块名。

示例: 还是在 hello3.py 文件中导入刚刚的cal 模块

程序架构

程序架构

  • 是一个 包含多个模块的 **特殊目录 **
  • 目录下有一个 特殊的文件** init .py**
  • 包名的 命名方式 和变量名一致,小写字母+ _

好处 :使用 import 包名,可以一次性导入包 中所有的模块

**常见的包结构

**

pakageName
-------__init__.py
-------moduleName1.py
-------moduleName2.py
------- ...

注:包路径下必须存在 init .py 文件

**示例: 建立一个名为 ani 包,手动创建一个名为 init .py 的空文件, 创建cat 模块和 dog 模块,并分别写一个 eat 函数

**

程序架构

程序架构

程序架构

程序架构

然后在 hello3.py 文件中调用 ** (方式一)**

程序架构

程序架构

然后在 hello3.py 文件中调用 (方式二)****

程序架构

程序架构

****注:导包建议采用此种方式,代码简洁,明了。****包中需要导入的模块越多 或者 名称越长,此种方法效果越好

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分