Python 将文本追加到全局变量
我在Python中使用全局变量时遇到问题;我已经在一个方法中定义了一个全局变量,我正在尝试从另一个方法向它添加一些文本 方法1:Python 将文本追加到全局变量,python,append,Python,Append,我在Python中使用全局变量时遇到问题;我已经在一个方法中定义了一个全局变量,我正在尝试从另一个方法向它添加一些文本 方法1: def method1(): global v v="hi " print v 方法2: def method2(): print v # prints `hi` v +="go home" print v # doesn't append 我如何称呼: method1() method2() 预期输出为hi go ho
def method1():
global v
v="hi "
print v
方法2:
def method2():
print v # prints `hi`
v +="go home"
print v # doesn't append
我如何称呼:
method1()
method2()
预期输出为hi go home,但我没有获得预期输出
我怎样才能解决这个问题?我需要在
method2()
>>> def method1():
... global v
... v="hi "
...
>>> def method2():
... global v
... v +="go home"
...
>>> method1()
>>> method2()
>>> v
'hi go home'
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
这样做的好处是,您可以创建多个字符串并独立地操作它们。例如:
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
最后,在v2
中有“hi-go-home-go-home”
,但在v1中仍然有“hi”
。对于全局变量,一次只能有一个值;一旦你改变它,你就失去了原来的价值
还有其他可能的设计用于组织组件并在它们之间共享或传递状态。例如,可以将状态(变量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()
除了非常有限的应用之外,全局变量是非常不受欢迎的。你想不想在没有全局变量的情况下实现这一点?你的函数名也很混乱method1
和method2
听起来应该是类的方法,而不是顶级函数。另外,为什么要在method1
中添加全局v
?如果你知道这是必要的,为什么你不想用方法2
?如果你不知道这是必要的,为什么要把它放在第一位?为什么我不能在连接后打印它?还有其他我可以做的吗?@user1315906,你可以打印它。