falsetru 的回答准确地显示了您需要做些什么才能使这项工作:一个全局变量必须在每个函数中声明为全局的,而不仅仅是一个函数。
然而,正如 Brionus 在评论中建议的那样,这可能不是解决这个问题的最佳方法。而不是全局变量,只需传递参数和返回值。例如:
def function1():
v = "hi "
print v
return v
def function2(v)
v += "go home "
print v
return v
v = function1()
v = function2(v)
这样做的好处是您可以创建多个字符串并独立操作它们。例如:
v1 = function1()
v2 = function1()
v2 = function2(v2)
v2 = function2(v2)
print v1
print v2
最后,你进入"hi go home go home "
了v2
,但你仍然进入"hi "
了 v1。使用全局变量,一次只能有一个值;一旦你改变它,你就失去了旧的价值。
还有其他可能的设计来组织组件并在它们之间共享或传递状态。例如,您可以将状态(v
变量)包装在一个类中,并将方法作为该类的实例方法:
class MyClass(object):
def method1(self):
self.v = "hi "
print self.v
def method2(self):
self.v += "go home "
print self.v
my_object = MyClass()
my_object.method1()
my_object.method2()