• Python入门学习-DAY16-模块深入


    模块的循环导入问题

    run.py执行文件

    # import m1 # 第一次导入


    # 验证解决方案一:
    '''
    正在导入m1
    正在导入m2
    '''
    # print(m1.x)
    # print(m1.y)

    # 验证解决方案二:
    import m1 # 第一次导入

    '''
    正在导入m1
    '''

    # print(m1.x)
    # print(m1.f1)
    m1.f1()
    '''
    正在导入m2
    m1.f1---->y:m2
    m2.f2--->x:m1
    '''


    m1.py模块文件

    # 错误示范
    '''
    print('正在导入m1')
    from m2 import y #第一次导入m2

    x='m1'
    '''

    # 解决方案一: 把循环导入的语句放到名字定义的后面
    # 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'

    m2.py模块文件

    # 错误示范
    '''
    print('正在导入m2')
    from m1 import x

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

    # print('正在导入m2')
    #
    # y='m2'
    #
    # from m1 import x

    # 解决方案二: 将循环导入语句放到函数内
    print('正在导入m2')

    def f2():
    from m1 import x
    print('m2.f2--->x: ',x)

    y='m2'

    区分python文件的两种用途

    run.py执行文件

    import m1

    def f1():
    print('f1')

    def f2():
    print('f2')

    m1.py模块文件

    #当文件被执行时__name__=='__main__'
    #当文件被导入时__name__=='模块名'
    # print(__name__)

    # if __name__ == '__main__':
    # f1()
    # f2()

     模块的搜索路径

    # 模块搜索路径的优先级
    # 1. 内存中已经加载过的
    # 2. 内置模块
    # 3. sys.path # 第一个值是当前执行文件所在的文件夹

    绝对导入与相对导入

    # 绝对导入: 以执行文件的sys.path为起始点开始导入,称之为绝对导入
    # 优点: 执行文件与被导入的模块中都可以使用
    # 缺点: 所有导入都是以sys.path为起始点,导入麻烦

    # 相对导入: 参照当前所在文件的文件夹为起始开始查找,称之为相对导入
    # 符号: .代表当前所在文件的文件加,..代表上一级文件夹,...代表上一级的上一级文件夹
    # 优点: 导入更加简单
    # 缺点: 只能在被导入的模块中使用,不能在执行文件中用

    软件开发的目录规范

  • 相关阅读:
    循环语句格式
    使用switch编写一个购物管理系统
    浅谈Spark(1)
    Java内存回收优化及配置
    同步、异步、阻塞、非阻塞IO
    安装聊天软件telegram-cli
    linux命令行下使用vboxmanage安装linux系统
    昨天晚上写了个 Python 程序,下载了一个图片网站 5000 来张图片
    git使用代理clone加速
    smtp发送邮件记得结尾发送" . "
  • 原文地址:https://www.cnblogs.com/xvchengqi/p/9442860.html
Copyright © 2020-2023  润新知