为什么在这种情况下arr是未定义的?

时间:2019-07-19 15:15:02

标签: 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, start, swapIdx)
    return swapIdx

1 个答案:

答案 0 :(得分:-1)

简短的答案是:您不能基于先前的参数设置默认参数,因为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