from a import x, changeX
等效于:
import a x = a.x changeX = a.changeX
@H_301_9@换句话说,
from a import x
不创建x
间接指向的a.x
,而是x
在b
模块中使用 当前 值创建一个新的全局变量a.x
。因此,以后的更改a.x
不会影响b.x
。为了使您的代码按预期工作,只需将代码更改
b.py
为import a
:import a a.changeX() print a.x
@H_301_9@您将减少混乱的导入,更易于阅读代码(因为无需查看导入列表即可清楚地知道哪个标识符来自何处),循环导入的问题更少(因为并非一次需要所有标识符),并且有更好的机会喜欢
reload
工作的工具。解决方法
码
我想在其他模块中使用全局变量,并将其值更改“传播”到其他模块。
a.py:
x="fail" def changeX(): global x x="ok"
b.py:
from a import x,changeX changeX() print x
如果我运行b.py,我希望它打印“确定”,但实际上却打印“失败”。
问题
- 这是为什么?
- 如何使它打印“确定”呢?
(运行python-2.7)
import a a.changeX() print a.x
@H_301_9@您将减少混乱的导入,更易于阅读代码(因为无需查看导入列表即可清楚地知道哪个标识符来自何处),循环导入的问题更少(因为并非一次需要所有标识符),并且有更好的机会喜欢
reload
工作的工具。解决方法
码
我想在其他模块中使用全局变量,并将其值更改“传播”到其他模块。
a.py:
x="fail" def changeX(): global x x="ok"
b.py:
from a import x,changeX changeX() print x
如果我运行b.py,我希望它打印“确定”,但实际上却打印“失败”。
问题
- 这是为什么?
- 如何使它打印“确定”呢?
(运行python-2.7)
x="fail"
def changeX():
global x
x="ok"
from a import x,changeX
changeX()
print x
换句话说,from a import x
不创建x
间接指向的a.x
,而是x
在b
模块中使用 当前
值创建一个新的全局变量a.x
。因此,以后的更改a.x
不会影响b.x
。
为了使您的代码按预期工作,只需将代码更改b.py
为import a
:
您将减少混乱的导入,更易于阅读代码(因为无需查看导入列表即可清楚地知道哪个标识符来自何处),循环导入的问题更少(因为并非一次需要所有标识符),并且有更好的机会喜欢reload
工作的工具。
我想在其他模块中使用全局变量,并将其值更改“传播”到其他模块。
a.py:
b.py:
如果我运行b.py,我希望它打印“确定”,但实际上却打印“失败”。
(运行python-2.7)
换句话说,from a import x
不创建x
间接指向的a.x
,而是x
在b
模块中使用 当前
值创建一个新的全局变量a.x
。因此,以后的更改a.x
不会影响b.x
。
为了使您的代码按预期工作,只需将代码更改b.py
为import a
:
import a a.changeX() print a.x
@H_301_9@您将减少混乱的导入,更易于阅读代码(因为无需查看导入列表即可清楚地知道哪个标识符来自何处),循环导入的问题更少(因为并非一次需要所有标识符),并且有更好的机会喜欢
reload
工作的工具。解决方法
码
我想在其他模块中使用全局变量,并将其值更改“传播”到其他模块。
a.py:
x="fail" def changeX(): global x x="ok"
b.py:
from a import x,changeX changeX() print x
如果我运行b.py,我希望它打印“确定”,但实际上却打印“失败”。
问题
- 这是为什么?
- 如何使它打印“确定”呢?
(运行python-2.7)
x="fail"
def changeX():
global x
x="ok"
from a import x,changeX
changeX()
print x
您将减少混乱的导入,更易于阅读代码(因为无需查看导入列表即可清楚地知道哪个标识符来自何处),循环导入的问题更少(因为并非一次需要所有标识符),并且有更好的机会喜欢reload
工作的工具。
我想在其他模块中使用全局变量,并将其值更改“传播”到其他模块。
a.py:
b.py:
如果我运行b.py,我希望它打印“确定”,但实际上却打印“失败”。
(运行python-2.7)
您将减少混乱的导入,更易于阅读代码(因为无需查看导入列表即可清楚地知道哪个标识符来自何处),循环导入的问题更少(因为并非一次需要所有标识符),并且有更好的机会喜欢reload
工作的工具。