区分Python文件的两种用途
run.py文件:
import m1
m1.py文件:
def f1():
print('f1')
def f2():
print('f2')
#当文件被执行时__name__=='__main__'
#当文件被导入时__name__=='模块名'
# print(__name__)
# if __name__ == '__main__':
# f1()
# f2()
模块的搜索路径
1.模块搜索路径的优先级
1.1 内存中已经加载过的
1.2 内置模块
1.3 sys.path (第一个值是当前执行文件所在的文件夹)
方案一:
修改环境变量找到导入模块
import sys
sys.path.append(r'D:脱产三期视频day16 3 模块的搜索路径1dir1')
方案二:
from dir1.dir2 import m2
m2.f2()
绝对导入: 以执行文件的sys.path为起始点开始导入,称之为绝对导入
优点: 执行文件与被导入的模块中都可以使用
缺点: 所有导入都是以sys.path为起始点,导入麻烦
(注意:执行文件只能用绝对导入)
相对导入: 参照当前所在文件的文件夹为起始开始查找,称之为相对导入
符号: .代表当前所在文件的文件,加..代表上一级文件夹,加...代表上一级的上一级文件夹
优点: 导入更加简单
缺点: 只能在导入包中的模块时才能使用,不能在执行文件中用
动态调用当前文件夹路径:
import sys
import os
变量名 = os.path.dirname(__file__)
sys.path.append(r'变量名'')