Python错误,不应该发生

时间:2018-05-04 19:59:45

标签: python

我的朋友收到了一个不应该发生的错误。 他在他的文件顶部添加了一个变量,并且无法从脚本中的函数访问该变量而不会出现错误。

这是他的代码:

numbers = [23, 5, 12, 94, 5 , 43, 23, 59, 10, 59, 31]
largest = 0
def find_largest(x): 
    for num in x:
        if num > largest:
            largest = num
    return largest
max_number = find_largest(numbers)
print(max_number)

这是错误

error message: Traceback (most recent call last):
 File "largestElement.py", line 10, in <module>
   max_number = find_largest(numbers)
 File "largestElement.py", line 6, in find_largest
   if num > largest:
UnboundLocalError: local variable 'largest' referenced before assignment

为什么会这样?当我们将变量定义移动到它起作用的函数作用域时,但是当我们将变量定义放在脚本的顶部时,他会在引用错误之前得到一个调用。此外,数字数组没有问题,我们以相同的方式使用它。

他的conda环境可能有问题吗?

1 个答案:

答案 0 :(得分:0)

您必须将largest作为函数的参数传递才能使其正常工作。

numbers = [23, 5, 12, 94, 5 , 43, 23, 59, 10, 59, 31]
largest = 0
def find_largest(x, largest): 
    for num in x:
        if num > largest:
            largest = num
    return largest
max_number = find_largest(numbers, largest)
print(max_number)