模块的介绍

 绝对导入: 以执行文件的sys.path为起始点开始导入,称之为绝对导入

        优点: 执行文件与被导入的模块中都可以使用

        缺点: 所有导入都是以sys.path为起始点,导入麻烦

 

 相对导入: 参照当前所在文件的文件夹为起始开始查找,称之为相对导入

        符号: .代表当前所在文件的文件加,..代表上一级文件夹,...代表上一级的上一级文件夹

        优点: 导入更加简单

        缺点: 只能在被导入的模块中使用,不能在执行文件中用

from dir0.dir1 import m1 # 执行文件中只能用绝对导入

m1.f1()

模块搜索路径的优先级

 1. 内存中已经加载过的

 2. 内置模块

 3. sys.path #  第一个值是当前执行文件所在的文件夹

模块的循环导入问题:

 解决方案一: 把循环导入的语句放到名字定义的后面

 print('正在导入m1')

x='m1'

 from m2 import y #第一次导入m2

 解决方案二: 将循环导入语句放到函数内

print('正在导入m1')

def f1():

    from m2 import y,f2 #第一次导入m2

    print('m1.f1---->y: ',y)

    f2()

x='m1'

环境变量是以当前执行文件为准的

强调:所有被导入的模块参照环境变量sys.path都是以执行文件为准的

import sys

sys.path.append(r'D:\脱产三期视频\day16\04 模块的搜索路径2\dir0')

from dir1 import m1

m1.f1()

 

posted @ 2018-08-08 16:49  薛才昌  阅读(108)  评论(0编辑  收藏  举报