一、定义
模块:用来从逻辑上组织python代码(实现一个功能),本质就是.py结尾的python文件。
包:用来从逻辑上组织模块的,带有一个__init__.py文件的目录
二、模块的使用方法(python的调用包的使用):
import模块的本质是将import的那一部分的代码直接copy到当前文件中
如果import 的是模块,则相当于在开辟了一个module_name的内存空间,故调用需module_name.val_name(or function_name)
如果import 的是函数名或变量,则相当于直接将变量和方法复制到当前文件中,故可以直接调用即可。
import包的本质是解释导入包的init文件。
三、模块导入实例
1.调用当前包的模块
如在在同一个模块下有三个py文件:My_family、Miss_yz、Mr_Li,在My_family中调用另外两个函数:
(1)被调用函数:
(2)主函数
(3)知识点说明
a.调用变量时,直接module_name.va_name(模块名.变量名)
b.调用函数时,直接module_name.func_name(模块名.函数名)
c.导入多个包时,可以将模块名用逗号隔开即可,效果是一样的,如下图所示:
2.导入当前包中模块的方法、变量
(1)我们再新建一个py文件,My_family_1,这次导入为直接导入模块中的方法和变量
由上可见,当我们直接导入方法和变量时,在调用的文件中,直接使用即可
(2)*注意,注意,注意,不建议:from module_name import ,具体看如下的例子:
显然,由于Mr_Li与Miss_yz有相同的变量和方法,后导入的Miss_yz将Mr_Li变量和方法覆盖了。(此例子具的有点极端,两个py文件的变量和方法名完全一样,实际中我们工程中往往是比较复杂,也往往不是一个在编写,所以存在可能重名的现象),故from module_name import * .不建议使用。
(3)*破解(2)的情况,可以使用as取别名(但是仍是不建议使用import )
四、导入的优化
当存在多个函数导入同一个模块下的同一函数,可以使用from module_name import fuction_name
这样比使用import module_name,调用时减少找模块的时间。