模块
模块是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 文件中调用 (方式二)


注:导包建议采用此种方式,代码简洁,明了。包中需要导入的模块越多 或者 名称越长,此种方法效果越好
程序猿与投资生活实录已改名为 程序猿知秋,WX同款,欢迎关注!














![③【Java 组】蓝桥杯省赛真题 [黄金连分数][马虎的算式]持续更新中...](https://img-blog.csdnimg.cn/20a7f1b58dfb4660b75d7f021c157d57.png#pic_center)




