Python 3.x 为什么在这种情况下arr没有定义?
在这种情况下,为什么我不能将数组长度设置为默认参数Python 3.x 为什么在这种情况下arr没有定义?,python-3.x,algorithm,sorting,Python 3.x,Algorithm,Sorting,在这种情况下,为什么我不能将数组长度设置为默认参数 def q_helper(arr, start=0, end=len(arr)-1): pivot = arr[start] swapIdx = start for i in range(len(arr)): if pivot > arr[i]: swapIdx += 1 swap(arr, swapIdx, i) swap(arr,
def q_helper(arr, start=0, end=len(arr)-1):
pivot = arr[start]
swapIdx = start
for i in range(len(arr)):
if pivot > arr[i]:
swapIdx += 1
swap(arr, swapIdx, i)
swap(arr, start, swapIdx)
return swapIdx
简单的回答是:不能基于前面的参数设置默认参数,因为python需要在定义函数时(而不是调用函数时)知道值 一个较长的答案可能是:如果您正在寻找一种有点类似于Python的方式来做您想要做的事情,我建议将默认值设置为
None
,然后如果变量恰好是None
,则将其设置为您想要的任何值。大概是这样的:
def q_helper(arr, start=0, end=None):
if end is None:
end = len(arr) - 1 # if not set, set it to one less than the array's length
可能的副本,如副本中所述,您不能执行此操作。在任何情况下,
end
甚至不在任何地方的函数中使用。