我的朋友收到了一个不应该发生的错误。 他在他的文件顶部添加了一个变量,并且无法从脚本中的函数访问该变量而不会出现错误。
这是他的代码:
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环境可能有问题吗?
答案 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)