首页 > 解决方案 > Python 的 range() 函数是重载的内置函数吗?

问题描述

我发现只有参数列表末尾的参数可以具有默认值,因为 VALUES 是按函数中的位置分配的,如下面的定义

def greeting(a,b=7):
    pass

并不是

def greeting(a=4,b):
    pass

我对内置range()函数的疑问是我们可以按如下方式传递参数

range(start_value, stop_value, increment_value)

调用函数时并不需要所有参数,所以range()函数是重载函数,还是定义中有默认参数?

标签: pythonrangedefault-parameters

解决方案


range获取三个参数并检查参数计数然后返回生成的可迭代对象

如果您想做类似的事情,那么您应该用 then 替换所有参数,*args然后执行以下操作

def range_(*args):
    start = 0
    end = 0
    step = 0
    # args is a list of arguments
    if len(args) == 1:
        end = args[0]
    elif len(args) == 2:
        start, end = args
    elif len(args) == 3:
        start, end, step = args
    else:
        print("the function gets maximum three arguments")
    # calculating something with start, end, step
    # and return result

PS如果你想用默认参数定义函数,那么默认参数应该在其他人之前定义


推荐阅读