zoukankan      html  css  js  c++  java
  • 模块循环导入问题

    #创建一个m1.py
    print('正在导入m1')
    from m2 import y
    x = 'm1'
    ----------------------------------------
    #创建一个m2.py
    print('正在导入m2')
    from m1 import x
    y='m2'
    ----------------------------------------
    #创建一个run.py
    import m1
    # 会报错
    # 先执行run.py--->执行import m1,开始导入m1并运行其内部代码--->打印内容"正在导入m1"--->执行from m2 import y 开始导入m2并运行其内部代码--->打印内容“正在导入m2”--->执行from m1 import x,由于m1已经被导入过了,所以不会重新导入,所以直接去m1中拿x,然而x此时并没有存在于m1中,所以报错
    -----------------------------------------
    # 直接执行m1.py
    # 会报错
    # 执行m1.py,打印“正在导入m1”,执行from m2 import y ,导入m2进而执行m2.py内部代码--->打印"正在导入m2",执行from m1 import x,此时m1是第一次被导入,执行m1.py并不等于导入了m1,于是开始导入m1并执行其内部代码--->打印"正在导入m1",执行from m1 import y,由于m1已经被导入过了,所以无需继续导入而直接问m2要y,然而y此时并没有存在于m2中所以报错
    -----------------------------------------
    # 解决方法:
    # 方法一:导入语句放到最后
    # 方法二:导入语句放到函数中
    
  • 相关阅读:
    进程对象的属性或方法详解
    进程理论以及开启子进程的两种方式
    计算机发展史(多道技术)
    基于socketserver实现的并发(tcp和udp)
    基于udp协议的套接字及udp协议粘包问题
    模拟ssh的远程网络传输
    周考题目及答案
    c/s架构搭建
    网络编程基础
    10.16模拟赛(湖南集训)
  • 原文地址:https://www.cnblogs.com/zyyhxbs/p/11100038.html
Copyright © 2011-2022 走看看