我对两种不同的代码编写方式有疑问。我想知道在某些情况下它们两者都还好还是更好?基本上,将要更新的变量提供给函数是否更好?
def f1(num):
output.append(num)
output = []
f1(2)
print(output)
和
def f1(num, output):
output.append(num)
output = []
f1(2, output)
print(output)
答案 0 :(得分:3)
在第一个示例中,您的函数仅将元素添加到全局定义的特定数组中。这不是一个好方法,您不能将其用于另一个数组。
第二种方法具有更好的通用方法。但是只有一个小修正;您有一个名为output
的数组,并将其传递给函数,但在函数中名称保持不变。因此,对于您的函数,有两个output
一个全局变量和一个局部变量,在这种情况下最好使用不同的名称:
output = []
def f1(num, arr):
arr.append(num)
f1(2, output)
print(output)
在相同的命名情况下,请参阅警告PyCharm显示:
答案 1 :(得分:1)
请考虑避免在可能的情况下使用第一个示例:全局变量可能非常难以使用,从而产生了您难以发现的问题。而是使用第二段代码。
您还可以编写类似以下代码的内容:
output = []
def add(num, listName):
listName.append(num)
return listname
for _ in range(5):
output = add(_, output)
print(output)