7.1 模块(module)

模块用来从逻辑上组织Python代码实现特定的功能,本质就是*.py文件,一个.py文件就是一个模块

模块的三种来源:

1)系统内置模块,python自带,例如:systimejson模块等

2)自定义模块,自己写的模块,对某段逻辑或某些函数进行封装后供其他函数调用。

注意:自定义模块的命名一定不能和系统内置的模块重名,否则将不能再导入系统的内置模块。例如:自定义了一个sys.py模块后,将不能再使用系统的sys模块。

3)第三方的开源模块:这部分模块可以通过pip install进行安装,有开源的代码。

想使用Python模块文件,需要在另一个python文件里导入模块,可以通过关键字import或from...import导入。

import语法

关键字“import”,后面跟具体的模块名称,导入某一个模块

import module1

 

可以使用一条语句导入多个模块,用逗号分隔

import module1,module2,...

 

也可以使用多条import语句

import module1

import module2

 

说明:

Python本身内置了很多非常有用的模块,只要安装完毕,这些模块就可以立刻使用;

同一个模块不管执行了多少次“import”,只会被导入一次,以防止模块一遍又一遍的被执行;

“import”应该被放在代码的顶端。

 

示例:

接下来我们导入一个自定义的模块,首先定义一个模块,并且把这个模块的名字叫做“demo.py”,如下图所示:

7.1 模块(module)

这个模块里定义了一个函数,计算输入的2个参数的和,并打印出来。将这个文件保存,接下来我们看调用方法:

7.1 模块(module)

在调用的文件中,只需要输入“import demo”,然后就可以在任意地方调用demo模块中的方法。

 

from...import

刚才我们提到了引入一个模块使用“import”关键字,它将把这个模块整个引入进来,那么,from...import则是引入一个指定部分到当前的命名空间中来

示例:

demo模块定义了两个函数,分别是“sum”和“sub”

7.1 模块(module)

现在我们用from...import使用这个模块,并且只想使用第一个函数sum,如下图:

7.1 模块(module)

从上面的两个例子,可以看到,“import”和“from...import”的作用都是引入一个模块,它们的区别在于:

“import”是引入一个完整的模块,“from...import”是引入模块中的一个或多个指定部分;

“import”引入模块后,如果需要使用模块里的函数方法,则需要加上模块的限定名字,“from...import”则不用加模块的限定名字,直接使用其函数方法。

 

还有一种引入模块的方法:“from...import*”,举例如下图:

7.1 模块(module)

调用sub函数不再提示error了

 “from...import *”把一个模块里的所有函数、变量都一次性的引入进来了(单下划线“_”开头的函数、变量除外),一般绝大多数编程人员不会这么写,有可能会覆盖现有代码的定义。

 

小结

Python中模块化的好处很多,有如下优点:

提高了代码的可维护性;

一个模块编写完毕之后,其他模块直接调用,不用重复编写代码,节省时间;

避免函数名称和变量名称重复,在不同的模块中可以存在相同名字的函数名和变量名,但是,切记,不要和系统内置的模块名称重复。