购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.4 Python代码组织方式

老师,我编写的Python代码越来越多了,怎么组织代码比较好呢?

很好的问题!Python提供了模块(Module)和包(Package)来组织代码,使项目更结构化。

什么是模块啊?

模块是一个包含变量、函数等的.py文件。导入模块后可以访问其内容。

听起来很方便!包又是什么呢?

包是一个包含模块的文件夹。导入包内模块需要使用点号,如package.module。

我明白了!使用模块和包可以把相关代码分组,方便管理。

没错!合理的代码组织可以使复杂项目更易维护。要养成编写可重用模块的习惯。

明白了!我会努力学习利用模块和包组织代码。

Python语句通过模块(Module)和包(Package)管理和组织代码。

2.4.1 模块

模块是保存代码的最小单位,一个文件Python就是一个模块。模块中可以声明变量、常量、函数、属性和类等Python程序元素。一个模块提供可以访问另外一个模块中程序的元素。

模块的命名规范:( 1 )使用简短的全小写英文字母;( 2 )为了提高可读性可以使用下画线;( 3 )避免与Python内置模块名相同。

下面通过示例介绍模块的使用。现有两个模块——module1和module2,两个模块中都声明相同名字的变量Money。

module1.py代码如下:

module2.py代码如下:

使用module1和module2中代码元素需要使用import语句实现。例如,在main.py文件中访问module1和module2模块中Money变量的示例代码如下:

上述代码执行结果如下所示。

为了访问其他模块子代码,不仅需要在模块一开始使用import语句引入模块,而且要在使用其他模块中的代码元素时加前缀“模块名+.”访问。

如果觉得这样比较麻烦,可以使用from<模块名> import实现。main2.py示例代码如下:

上述第①处是引入module1中的xyz变量,如果需要引入所有代码元素,可以使用(*)号,见代码第②处。

使用了from<模块名> import语句引入后,访问代码元素时可以省略“模块名+.”前缀,但是要注意不同模块中相同名字代码元素的冲突问题,例如代码第③处访问的Money变量还是当前模块中的Money变量。

2.4.2 包

如果两个模块名字相同,如何防止命名冲突呢?那就是使用包,包本质上是一种命名空间。

包的命名规范与模块相同。

2.4.3 创建包

包本质上是一个文件夹,但是该文件夹下面会有一个__init__.py文件(注意init前后分别是双下画线),该文件内容是空的,作用是告诉Python解释器该文件夹是一个包。例如在项目中创建pkg2和pkg1两个包,图2-2所示是包的层次结构。

图2-2 包的层次结构

2.4.4 引入包

包创建好后,将两个模块hello放到不同的包pkg1和pkg2中,如图2-3所示。

图2-3 包中的模块

为了访问包中的代码元素,需要使用import语句导入包中的代码元素。

pkg1的hello模块代码:

调用hello模块代码:

上述代码执行结果如下所示。 288Hr9wtXi3+RhlRuAl2E2kmyvlnzPRY9X4g0sBKsuU23P/2RJ+0iCMaNjAxxzgI

点击中间区域
呼出菜单
上一章
目录
下一章
×