我在一个函数中有一个全局变量,用作另一个函数的参数。如果没有第二个函数改变它,我怎么能用它作为参数呢?
示例:
variable = []
def bar(x):
x[2] = 4
print x
def foo():
global variable
variable = [1, 2, 3, 4]
bar(variable)
print variable
像这样运行foo()
会输出:
[1, 2, 4, 4]
[1, 2, 4, 4]
当我想要打印时:
[1, 2, 4, 4]
[1, 2, 3, 4]
那么有没有办法保留原始的全局变量以备将来使用,同时仍在其他函数中使用它?
答案 0 :(得分:2)
如果您希望将列表的内容传递给bar
,但您不希望更改影响原始列表,请在传递时复制列表。您可以这样做通过改变:
bar(variable)
为:
bar(variable[:])
[]
表示法可用于创建列表切片,这些列表是特定索引范围的副本。
[:]
专门为您提供整个列表的副本。
答案 1 :(得分:1)
如果您想传递列表的副本,请使用bar(variable[:])
。
像这样:
variable = []
def bar(x):
x[2] = 4
print x
def foo():
global variable
variable = [1, 2, 3, 4]
bar(variable[:])
print variable
这将输出:
>>> foo()
[1, 2, 4, 4]
[1, 2, 3, 4]