7.1 模块(module)
模块用来从逻辑上组织Python代码实现特定的功能,本质就是*.py文件,一个.py文件就是一个模块。
模块的三种来源:
(1)系统内置模块,python自带,例如:sys、time、json模块等
(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”,如下图所示:
这个模块里定义了一个函数,计算输入的2个参数的和,并打印出来。将这个文件保存,接下来我们看调用方法:
在调用的文件中,只需要输入“import demo”,然后就可以在任意地方调用demo模块中的方法。
from...import
刚才我们提到了引入一个模块使用“import”关键字,它将把这个模块整个引入进来,那么,from...import则是引入一个指定部分到当前的命名空间中来
示例:
demo模块定义了两个函数,分别是“sum”和“sub”
现在我们用from...import使用这个模块,并且只想使用第一个函数sum,如下图:
从上面的两个例子,可以看到,“import”和“from...import”的作用都是引入一个模块,它们的区别在于:
“import”是引入一个完整的模块,“from...import”是引入模块中的一个或多个指定部分;
“import”引入模块后,如果需要使用模块里的函数方法,则需要加上模块的限定名字,“from...import”则不用加模块的限定名字,直接使用其函数方法。
还有一种引入模块的方法:“from...import*”,举例如下图:
调用sub函数不再提示error了
“from...import *”把一个模块里的所有函数、变量都一次性的引入进来了(单下划线“_”开头的函数、变量除外),一般绝大多数编程人员不会这么写,有可能会覆盖现有代码的定义。
小结
Python中模块化的好处很多,有如下优点:
提高了代码的可维护性;
一个模块编写完毕之后,其他模块直接调用,不用重复编写代码,节省时间;
避免函数名称和变量名称重复,在不同的模块中可以存在相同名字的函数名和变量名,但是,切记,不要和系统内置的模块名称重复。