m2

循环导入问题

人走茶凉 提交于 2019-11-30 05:52:52
m1.py print('from m1.py') def func1(): from m2 import x print(x) y = 'm1' m2.py print('from m2.py') def func1(): from m1 import y print(y) x = 'm2' 来源: https://www.cnblogs.com/zhouxuchong/p/11564814.html

模块基础-03循环导入问题

孤者浪人 提交于 2019-11-30 03:40:16
一丶什么是循环导入 # m1.py print('from m1.py') from m2 import x y = 'm1'  1.创建m2的名称空间  2.执行m2.py,将执行产生的名字丢到m2.py  3.在当前执行文件中拿到m2.x # m2.py print('from m2.py') from m1 import y x = 'm2'  1.创建m1的名称空间  2.执行m1.py,将执行产生的名字丢到m1.py  3.在当前执行文件中拿到m1.y # run.py import m1  1.创建m1的名称空间  2.执行m1.py,将执行产生的名字丢到m1.py  在当前执行文件中拿到m1   * 如果运行run.py,则会报错ImportError: cannot import name 'y'   * 如果运行m1.py,则会报错ImportError: cannot import name 'x'   * 如果运行m2.py,则会报错ImportError: cannot import name 'y' 二丶解决方案 我们可以使用函数定义阶段只识别语法的特性解决循环导入的问题,我们也可以从本质上解决循环导入的问题,但是最好的解决方法是不要出现循环导入。 2.1 方案一(推荐方法) 放在函数体中导入 # m1.py print('from m1.py') def

模块的循环导入问题

梦想与她 提交于 2019-11-27 10:41:49
一、什么是循环导入 两个模块互相导入,就形成了导入循环,比如下面的这种情况 print(x) from m2 import x y = 20 m1.py print(y) from m1 import y x = 1 m2.py 如果运行m1.py,则会产生`ImportError: cannot import name 'y` 如果运行m2.py,则会产生`ImportError: cannot import name 'x` 所以根本原因是:在导入的时候,m1需要访问m2的变量y,但是y没有初始化完成 所以解决方法有两个: 二、解决方案 y初始化完成后,才让m1.py访问m2.py的变量 方案一 1 print(x) 2 3 def func1(): 4 from m2 import x 5 print(x) 6 7 y =20 m1.py 1 print(y) 2 3 def func1(): 4 from m1 import y 5 print(y) 6 7 x = 1 m2.py 方案一 1 print(x) 2 3 y = 20 4 from m2 import x m1.py 1 print(y) 2 3 x = 1 4 from m1 import y m2.py 来源: https://www.cnblogs.com/yanjiayi098-001/p

循环导入问题

风格不统一 提交于 2019-11-27 10:40:00
循环导入问题 一、什么是循环导入 # m1.py """ @author RansySun @create 2019-08-15-15:45 """ print("m1中正在导入m2") from m2 import y x = 'm1' print("m1中y:", y) 创建m2的名称空间 执行m2.py,将执行产生的名字丢到m2.py 在当前执行文件中拿到m2.x # m2.py """ @author RansySun @create 2019-08-15-15:45 """ print("m2中正在导入m1") from m1 import x y = 'm2' print("打印m2中引用的x:", x) 创建m1的名称空间 执行m1.py,将执行产生的名字丢到m1.py 在当前执行文件中拿到m1.y # run.py import m1 创建m1的名称空间 执行m1.py,将执行产生的名字丢到m1.py 在当前执行文件中拿到m1 m1中正在导入m2 m2中正在导入m1 m1中正在导入m2 Traceback (most recent call last): ImportError: cannot import name 'y' from 'm2' ( 模块循坏导入问题\m2.py) 分析原因: 首先运行run.py—>import m1,开始导入m1并运行其内部代码-