一、定义

模块:用来从逻辑上组织python代码(实现一个功能),本质就是.py结尾的python文件。

包:用来从逻辑上组织模块的,带有一个__init__.py文件的目录

二、模块的使用方法(python的调用包的使用):

python from 动态加载包和模块 python __import__加载模块_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)被调用函数:

python from 动态加载包和模块 python __import__加载模块_python_02


(2)主函数

python from 动态加载包和模块 python __import__加载模块_调用函数_03


(3)知识点说明

a.调用变量时,直接module_name.va_name(模块名.变量名)

b.调用函数时,直接module_name.func_name(模块名.函数名)

c.导入多个包时,可以将模块名用逗号隔开即可,效果是一样的,如下图所示:

python from 动态加载包和模块 python __import__加载模块_python_04


2.导入当前包中模块的方法、变量

(1)我们再新建一个py文件,My_family_1,这次导入为直接导入模块中的方法和变量

python from 动态加载包和模块 python __import__加载模块_python_05


由上可见,当我们直接导入方法和变量时,在调用的文件中,直接使用即可(2)*注意,注意,注意,不建议:from module_name import ,具体看如下的例子:

python from 动态加载包和模块 python __import__加载模块_python_06


显然,由于Mr_Li与Miss_yz有相同的变量和方法,后导入的Miss_yz将Mr_Li变量和方法覆盖了。(此例子具的有点极端,两个py文件的变量和方法名完全一样,实际中我们工程中往往是比较复杂,也往往不是一个在编写,所以存在可能重名的现象),故from module_name import * .不建议使用。(3)*破解(2)的情况,可以使用as取别名(但是仍是不建议使用import )

python from 动态加载包和模块 python __import__加载模块_python_07


四、导入的优化

当存在多个函数导入同一个模块下的同一函数,可以使用from module_name import fuction_name

这样比使用import module_name,调用时减少找模块的时间。