如何在函数内部更新变量?

时间:2020-06-26 20:37:03

标签: python scope global-variables

我对两种不同的代码编写方式有疑问。我想知道在某些情况下它们两者都还好还是更好?基本上,将要更新的变量提供给函数是否更好?

def f1(num):
    output.append(num)

output = []
f1(2)
print(output)

def f1(num, output):
    output.append(num)

output = []
f1(2, output)
print(output)

2 个答案:

答案 0 :(得分:3)

在第一个示例中,您的函数仅将元素添加到全局定义的特定数组中。这不是一个好方法,您不能将其用于另一个数组。

第二种方法具有更好的通用方法。但是只有一个小修正;您有一个名为output的数组,并将其传递给函数,但在函数中名称保持不变。因此,对于您的函数,有两个output一个全局变量和一个局部变量,在这种情况下最好使用不同的名称:

output = []

def f1(num, arr):
    arr.append(num)

f1(2, output)
print(output)

在相同的命名情况下,请参阅警告PyCharm显示:

enter image description here

答案 1 :(得分:1)

请考虑避免在可能的情况下使用第一个示例:全局变量可能非常难以使用,从而产生了您难以发现的问题。而是使用第二段代码。

您还可以编写类似以下代码的内容:

output = []

def add(num, listName):
    listName.append(num)

    return listname

for _ in range(5):
    output = add(_, output)

print(output)