gpt4 book ai didi

python - 引用一个显示 'local variable ' Final_ans' 在声明之前引用的变量'

转载 作者:行者123 更新时间:2023-12-02 00:07:47 24 4
gpt4 key购买 nike

下面的这段代码给出了“声明之前引用的局部变量'final_ans'”

def powerset(array):
# Write your code here.

def helper(arr, idx, temp=[]):
if idx == len(arr):
final_ans+=[temp]
return
helper(arr,idx+1, temp + [arr[idx]])
helper(arr,idx+1, temp)
return

final_ans = []
helper(array,0,[])
return final_ans

print(powerset([1,2,3]))

然而,下面的代码片段可以正常工作,没有任何错误。

def powerset(array):
# Write your code here.

def helper(arr, idx, temp=[]):
if idx == len(arr):
final_ans.append(temp)
return
helper(arr,idx+1, temp + [arr[idx]])
helper(arr,idx+1, temp)
return

final_ans = []
helper(array,0,[])
return final_ans

print(powerset([1,2,3]))

我知道在第一个代码段中使用 nonlocal 将使代码正常工作。但我无法理解使用 append 而不是 += 来改变范围。

最佳答案

即使没有将 Final_ans 声明为非本地,Append 也可以工作,因为它是方法调用,而不是赋值。非局部变量不能被赋值,除非它们首先声明为非局部变量,但它们可以被引用,例如在赋值的 RHS 上。

关于python - 引用一个显示 'local variable ' Final_ans' 在声明之前引用的变量',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59001322/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com