我得到一个错误,说p2的arr未定义。如果我将p2=len(arr)-1表达式移到函数内部,错误就会消失。为什么会出现此错误?如何使此默认参数表达式工作
def sumZero_refactor(arr, p1 = 0, p2 = len(arr) -1):
NameError: name 'arr' is not defined
def sumZero_refactor(arr, p1 = 0, p2 = len(arr) -1):
while p1 < p2:
if arr[p1] + arr[p2] == 0:
return [arr[p1], arr[p2]]
elif arr[p1] + arr[p2] < 0:
p1 += 1
else:
p2 -= 1
print(sumZero_refactor([-3, -2, -1, 0, 1, 2, 3]))
print(sumZero_refactor([-2, 0, 1, 3]))
print(sumZero_refactor([1, 2, 3]))
print(sumZero_refactor([-8, -7, -5, -2, 0, 1, 2, 3, 4, 5, 6]))
有些语言,如Ruby,允许参数列表引用以前命名的参数。不幸的是,Python没有
您必须在函数体中添加
p2 = len(arr) - 1
您可以这样做:
这是因为
arr
尚未定义。但是,在函数代码中定义了arr
您不能使用参数arr,然后为p2变量放置arr,因为arr尚未完全定义
更正代码:
相关问题 更多 >
编程相关推荐