初识包 | Python从入门到精通:高阶篇之三十八

模块化简介 | Python从入门到精通:高阶篇之三十七

包 Package

包也是一个模块。
当我们模块中代码过多时,或者一个模块需要被分解为多个模块时,这时就需要使用到包。
普通的模块就是一个py文件,而包是一个文件夹。
创建一个hello的文件夹,此时它并不是一个包。
我们可以通过新建一个模块来验证。

import hello

print(hello)

执行结果:

初识包 | Python从入门到精通:高阶篇之三十八

包中必须要一个 __init__.py 这个文件,这个文件中可以包含有包中的主要内容。

初识包 | Python从入门到精通:高阶篇之三十八

在__init__.py这个文件中定义

a = 10
b = 20

def test():
    print('test')

在新建的模块中验证:

print(hello.a)
print(hello.b)
hello.test()

执行结果:

初识包 | Python从入门到精通:高阶篇之三十八

在hello中新建a.py和b.py

初识包 | Python从入门到精通:高阶篇之三十八

在a.py中输入:

c = 30

在b.py中输入:

d = 40

将__init__.py中的a,b删掉,此时在新建的模块中输出。

print(hello.a)

执行结果:

初识包 | Python从入门到精通:高阶篇之三十八

我们之所以建立包,是为了将相关的模块放在一起,比如进行计算器的程序(加减乘除等操作)可以放在一个包中,方便管理,并且在引用的时候也可以根据需要去引用。
但是对于新建的模块而言,如何引用hello的其他模块呢?我们可以直接引用。

from hello import a , b

# print(a)
print(a.c)
print(b.d)

执行结果:

初识包 | Python从入门到精通:高阶篇之三十八
初识包 | Python从入门到精通:高阶篇之三十八
初识包 | Python从入门到精通:高阶篇之三十八

我们在新建a.py和b.py的时候会发现hello中多了一个__pycache__文件。

初识包 | Python从入门到精通:高阶篇之三十八

__pycache__ 是模块的缓存文件。
py代码在执行前,需要被解析器先转换为机器码,然后再执行。所以我们在使用模块(包)时,也需要将模块的代码先转换为机器码然后再交由计算机执行。而为了提高程序运行的性能,python会在编译过一次以后,将代码保存到一个缓存文件中,这样在下次加载这个模块(包)时,就可以不再重新编译而是直接加载缓存中编译好的代码即可。

配套视频课程,点击这里查看

获取更多资源请订阅Python学习站

上一篇:从零入门 Serverless | 一文搞懂函数计算及其工作原理


下一篇:【最佳实践】如何使用Metricbeat收集系统数据及Nginx服务数据