目录
主要内容
- 定义模块
- 编写第一个自己的模块
- 使用import语句
- 修改模块搜索路径
- 让名称归模块私有
- 导入标准库和第三方模块
- 理解Python的作用域规则和命名空间
python语言如果没有众多的库作为支撑的话,那python作为一门编程语言存在意义也不大了。正是多种多样的标准库和诸多第三方库的存在,才让python具有了强大的功能。
模块、包和库的作用基本都是相同的,都是为了实现代码的重复利用,提高代码效率。区别是从模块到包再到库,代码数量越多,实现的功能越强大。当然,也会有一些管理工具。这里先简单了解一下模块。
(一)何为模块
模块(module)用于组织较大的Python项目,Python标准库被拆分为多个模块,以便更易于管理。
模块是一个包含代码的文件,其中定义了一组Python函数或其他对象,而且模块的名称来自文件名。
模块通常包含Python源代码,但也可以是经过编译的C或C++对象文件。经过编译的模块和Python源代码模块的用法是一样的。
模块不仅可以将相互关联的Python对象归并成组,还有助于避免命名冲突(name-clash)问题。因为Python采用了命名空间(namespace)的机制,所以使用模块名可以同时保留两个reverse函数。命名空间本质上就是标识符的字典,可用于代码块、函数、类、模块等。
(二)编写第一个模块
我们将通过编写一个简单的模块来了解模块。
首先新建一个mymath.py文件,注意将文件保存在可执行文件所在的目录中。我的文件目录是D:\python37,通过下面的IDLE编辑器窗口也可以看到。
选择File>New Windows菜单,输入以下代码:
以上我们便简单定义了一个模块,这个模块只是定义了pi常数和新建一个函数。
下面我们需要在我们的代码中使用这个模块,需要注意的是,使用前一定要导入模块,如果未进行import语句导入,Python解释器会进行报错:
>>> pi
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
pi
NameError: name 'pi' is not defined
>>> area(3)
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
area(3)
NameError: name 'area' is not defined
也就是说,Python没有内置常量pi和函数area。我们将模块导入之后:
>>> import mymath
>>> pi
Traceback (most recent call last):
File "<pyshell#3>", l