如何将len()的输出作为函数参数的默认值传递

时间:2019-06-22 03:49:49

标签: python python-3.x

我正在尝试创建一个可以打印出列表的函数,并且根据参数,该函数将根据所选列表长度打印值。

但是,NameError: name 'data_list' is not defined。我假设它是指data_list中的len()变量。

我知道我可以将len(data_list)设置为函数外部的变量,但我希望所有变量都包含在其中。

期望的结果是能够使默认的list_length等于用作输入参数的data_list的长度。

def function(data_list, list_length = len(data_list)):
    print(data_list[0:list_length+1])

4 个答案:

答案 0 :(得分:1)

使用默认值None:

>>> def f(a, length=None):
...     return a[:length]

>>> a = [1,2,3,4,5,6,7,8,9]
>>> f(a)
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> f(a,4)
[1, 2, 3, 4]
>>> 

答案 1 :(得分:0)

1)。请勿使用list_length = len(data_list)作为参数。

2)。而不是在函数内部分配list_length

def function(data_list):
    list_length = len(data_list)
    if list_length >= 10:
        print(data_list[0:list_length+1])
    else:
        print("Your data_list is less than 10. ")

答案 2 :(得分:0)

我不确定在这种情况下是否会推荐使用,但是使用装饰器会做到这一点。

def change_args(f):
    def wrapper(arg1, list_length=None):
        if list_length is None:
            return f(arg1, list_length=len(arg1))
        else:
            return f(arg1, list_length=list_length)
    return wrapper

@change_args
def function(data_list, list_length=None):
    print(data_list[0:list_length])

然后按预期运行:

>>> function([1,2,3])
[1,2,3]
>>> function([1,2,3],list_length=2)
[1,2]

答案 3 :(得分:-1)

def function(data_list):
    list_length = len(data_list)
    print(data_list[0:list_length+1])

这对您有用吗?