[英]Python 3: The visibility of global variables across modules
之前曾问过类似的问题:
假设您有2个模块,其中一个模块具有要在另一个模块中读取的全局变量。 有没有一种方法可以使它们跨模块访问而不必每次都将它们称为module.variable?
例:
modulea.py:
import moduleb
from moduleb import *
print("A String: " + astring)
print("Module B: " + moduleb.astring)
afunction()
print("A String: " + astring)
print("Module B: " + moduleb.astring)
moduleb.py:
astring = "dlroW olleH"
def afunction():
global astring
astring = "Hello World"
输出是
A String: dlroW olleH
Module B: dlroW olleH
A String: dlroW olleH
Module B: Hello World
建议通过使用“ from module import *”来复制而不是引用全局变量。
在此先感谢您的帮助。
from module import *
绑定的对象module
喜欢当前模块中命名变量。 这不是副本,而是对相同对象的引用。 在其中一个模块重新绑定该对象之前,这两个模块将看到同一对象。 修改可变对象不会重新绑定变量,因此可以执行诸如追加到列表之类的操作。 但是重新分配变量不会重新绑定它。 通常,重新绑定很简单:
myvar = something_else
但有时它不太清楚
myvar += 1
对于int
或str
等不可变对象,这将重新绑定变量,并且现在两个模块具有不同的值。
如果要确保始终引用相同的对象,请保留名称空间引用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.