一、定义
模块:用来从逻辑上组织python代码(变量、函数、类、逻辑:实现一个功能),本质就是.py结尾的python文件(比如:文件名:test.py,对应的模块名:test)
包:用来从逻辑上组织模块的,本质就是一个目录,且必须带有__init__.py的文件
二、导入模块方法
方法一:import 模块名 =》导入模块中的函数、变量等
方法二:import 模块名1,模块名2 =》导入模块中的函数、变量等
方法三:from 模块名 import * =》导入模块中的所有内容
方法四:from 模块名 import 变量/函数等 as 别名 =》导入模块中的变量、函数并给一个别名
三、import本质
导入模块的本质就是把python文件解释一遍
导入包的本质就是执行该包下的__init__.py文件
四、添加环境变量
importos,sysprint('当前目录的相对路径:',__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文件
importos,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、导入包,并调用模块:
importos,sys
BASE_PATH= os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(BASE_PATH)#末尾位置添加环境变量#sys.path.insert(0,BASE_PATH) # 指定位置插入环境变量,不建议这么用
importpackage_test
package_test.test1.test()
7、优化导入模块:
比如:重复使用module_2.regin()时:
from module_2 importregindeffunc1():
regin()print('in the func1')deffunc2():
regin()print('in the func2')