• 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文件
    

      

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

  • 相关阅读:
    java实现第三届蓝桥杯填算式
    java实现第三届蓝桥杯填算式
    微信--高效解决token及授权用户openid的持久化处理办法
    微信开发学习总结——微信开发入门(转)
    Java 微信公众号开发--- 接入微信
    微信开发工具类
    手把手教你反编译别人的app
    马士兵hadoop第五课:java开发Map/Reduce(转)
    马士兵hadoop第四课:Yarn和Map/Reduce配置启动和原理讲解(转)
    马士兵hadoop第三课:java开发hdfs(转)
  • 原文地址:https://www.cnblogs.com/bugoobird/p/12858538.html
Copyright © 2020-2023  润新知