一、定义
模块:用来从逻辑上组织python代码(变量、函数、类、逻辑:实现一个功能),本质就是.py结尾的python文件(比如:文件名:test.py,对应的模块名:test)
包:用来从逻辑上组织模块的,本质就是一个目录,且必须带有__init__.py的文件
二、导入模块方法
方法一:import 模块名 =》导入模块中的函数、变量等
方法二:import 模块名1,模块名2 =》导入模块中的函数、变量等
方法三:from 模块名 import * =》导入模块中的所有内容
方法四:from 模块名 import 变量/函数等 as 别名 =》导入模块中的变量、函数并给一个别名
三、import本质
导入模块的本质就是把python文件解释一遍
导入包的本质就是执行该包下的__init__.py文件
四、添加环境变量
import os,sys print('当前目录的相对路径:',__file__) # 获取当前目录的相对路径 print('当前目录的绝对路径:',os.path.abspath(__file__)) # 获取当前目录的绝对路径 print('当前目录的上级目录:',os.path.dirname(__file__)) # 返回当前文件的上级目录 BASE_PATH = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # 获取当前目录的上上级目录 sys.path.append(BASE_PATH) # 添加环境变量 # sys.path.insert(0,BASE_PATH) # 指定位置插入环境变量,不建议这么用
五、示例
注:以下所有导入模块操作,都在main.py执行。
目录结构如下:
1、导入单个模块:
import module_1 # import 导入单个模块 print(module_1.name) # 调用模块中的变量 module_1.say_hello() # 调用模块中的方法
2、导入多个模块:
import module_1,module_2 # 导入多个模块 module_1.say_hello() module_2.regin()
3、导入模块中的所有内容:
from module_1 import * #导入模块中的所有内容,不建议此用法 print(name)
4、导入模块变量并指定别名
from module_1 import name as lzh_name # 使用别名 name = 'module_test' print(name) print(lzh_name)
5、导入包,即:执行该包下的__init__.py文件
import os,sys BASE_PATH = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) sys.path.append(BASE_PATH) # 末尾位置添加环境变量 # sys.path.insert(0,BASE_PATH) # 指定位置插入环境变量,不建议这么用 import package_test
package_test下_init_内容:
#!/user/bin env python # author:Simple-Sir # time:2019/8/20 21:46 # import test1 from . import test1 # . 从当前目录导入模块 print('from the packg packgtest.')
6、导入包,并调用模块:
import os,sys BASE_PATH = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) sys.path.append(BASE_PATH) # 末尾位置添加环境变量 # sys.path.insert(0,BASE_PATH) # 指定位置插入环境变量,不建议这么用 import package_test package_test.test1.test()
7、优化导入模块:
比如:重复使用module_2.regin()时:
from module_2 import regin def func1(): regin() print('in the func1') def func2(): regin() print('in the func2')