Python学习笔记(16)import模块调用

一、同级目录下不同文件引用

  如图所示:day4下有a.py和b.py两个文件,现在需要在b.py文件中引用a.py文件的变量和方法

  

  在b.py文件中,输入 import a,检查import a后输出结果,结果为a.py的文件执行结果。注意:import  xxx  表示会执行xxx的代码,可使用import  xxx  as f ,使用f为xxx取表明,此时 f.func()等价于xxx.func()

  同级目录下文件引用可使用两种方式:1、在需要引用的文件开头,输入import  xxx as f,使用f.方法名,f.属性值即可        2、在需要引用的文件开头,输入for xxx  import  属性,方法名     直接使用方法名(),属性即可调用

  

'''
a.py content
'''

name = 'a.py'

def func():
    print('这是a.py里面的函数')

  

'''
b.py content
'''

#方式一:
import a as apy
# print(apy.name)
#
# apy.func()

#方式二
# from a import func,name
# func()
# print(name)

  

  当某个文件中存在测试代码,此时如果其他地方import该文件,会执行该测试代码,此时可将测试的代码放在  if __name__=='__main__'条件语句下,此时只有本文件才会执行该条件下代码,其他import导入的地方不会执行测试代码,因为__name__是环境变量,会取当前的文件名称,当从其他文件import时,__name__不在与__main__相等

 

二、导入不同目录下文件

首先,看下import模块工作原理

import 导入顺序:1、首先会自动查下当前目录下是否包含该文件,如果包含,则使用import  xxx 即可。   

          2、如果当前目录下查询不到该文件时,则会查询python的环境变量。(使用import sys    sys.path可查询目前所有的python变量)

 

问题:现在需要在day4下 导入目录.py文件引用 day5下的tools.py的方法,那么该如何引用?

 

  

  首先,import必须使用环境变量,那么就通过sys.path.insert或者sys.path.append将day5目录添加到python环境变量中

import sys
print(sys.path)
sys.path.insert(0,r'E:\Python_test\BestTest_python_exe\day5')
# #系统自动将父级目录Python_test插入环境变量
# print(sys.path)
# sys.path.append('E:\\Python_test\\BestTest_python_exe\\day5')
#路径前加r,表示元字符,不会转义,或者使用\\

  输出path结果:

['E:\\Python_test\\BestTest_python_exe\\day4', 'E:\\Python_test', 'E:\\Program Files\\JetBrains\\PyCharm 2019.3.2\\plugins\\python\\helpers\\pycharm_display',...]
['E:\\Python_test\\BestTest_python_exe\\day5', 'E:\\Python_test\\BestTest_python_exe\\day4', 'E:\\Python_test', 'E:\\Program Files\\JetBrains\\PyCharm 2019.3.2\\plugins\\python\\helpers\\pycharm_display',....]

  注意:此时系统会自动将项目根目录的项目导入python系统环境变量,即 'E:\\Python_test'

 

此时有两种方式导入:

#方式一:from  目录 import 文件
from BestTest_python_exe.day5 import tools
result = tools.test('ggg')  #不报错

#方式二:from 目录.文件 import 方法名
# from BestTest_python_exe.day5.tools import test   也没有问题
# result = test('ggg')

  

三、引入某个目录下多个文件

  我们知道是无法直接通过import 目录来引用,必须使用import 文件格式 

 

  如下图,如果day 导入目录.py想引用day5 下多个文件怎么处理?

  

 

 

  在day5目录下,新建一个文件名为 __init__.py文件,在__init__.py文件中输入 print('__init__')  ,此时在day4 导入目录文件中输入   import BestTest_python_exe.day5,执行导入目录文件,输出:__init__

  __init__.py文件可以将文件夹(也就是目录)变成模块包,变成包之后就可以任意的导入模块包下面的各种文件

  

  结论:在import  目录,此时会自动自行目录下的__init__.py文件中的代码

 

  此时 将__init__.py文件内容修改为

from . import tools,a,b,c       #从当前目录导出所有的py文件

  

此时就可以使用 文件.方法名  文件.属性 的方式了

posted @ 2020-05-09 16:32  布谷鸟的春天  阅读(903)  评论(0编辑  收藏  举报