python全局变量作为参数

时间:2015-01-16 21:22:47

标签: python global-variables global

我在一个函数中有一个全局变量,用作另一个函数的参数。如果没有第二个函数改变它,我怎么能用它作为参数呢?

示例:

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]

那么有没有办法保留原始的全局变量以备将来使用,同时仍在其他函数中使用它?

2 个答案:

答案 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]