• 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_testBestTest_python_exeday5')
    # #系统自动将父级目录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文件
    

      

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

  • 相关阅读:
    [RTT例程练习] 3.1 动态内存管理之rt_malloc和rt_free
    [RTT例程练习] 3.3 静态内存管理,内存池mempool
    [RTT例程练习] 6.2 在 Finsh 中运行自定义函数
    [RTT例程练习] 2.9 事件机制event
    [SCons 有点翻译的scons学习] 3. 生成和使用库
    [RTT例程练习] 3.2 动态内存管理之rt_realloc和free
    vim 启动 python的自动补全
    [RTT例程练习] 6.1 Finsh 的基本使用
    ELF文件重定位
    [RTT例程练习] 4.2 动态定时器
  • 原文地址:https://www.cnblogs.com/bugoobird/p/12858538.html
Copyright © 2020-2023  润新知