【问题标题】:How to update a variable inside a function? [closed]如何更新函数内的变量? [关闭]
【发布时间】:2020-06-26 20:37:03
【问题描述】:

我有一个关于编写一段代码的两种不同方式的问题。我想知道在某些情况下它们是否都可以或一个更好?基本上,将我们要更新的变量提供给函数是否更好?

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

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

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

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

【问题讨论】:

  • 尽可能避免第一个;可变的全局变量是造成混乱和错误的秘诀。

标签: python scope global-variables


【解决方案1】:

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

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

output = []

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

f1(2, output)
print(output)

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

【讨论】:

    【解决方案2】:

    请考虑尽可能避免使用第一个示例:全局变量可能很难使用,从而产生您不容易发现的问题。相反,请使用第二段代码。

    你也可以写如下代码:

    output = []
    
    def add(num, listName):
        listName.append(num)
    
        return listname
    
    for _ in range(5):
        output = add(_, output)
    
    print(output)
    

    【讨论】:

      猜你喜欢
      • 2019-08-22
      • 1970-01-01
      • 2022-11-21
      • 2021-10-06
      • 2020-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多