问题描述
我发现只有在参数列表末尾的参数才能有默认值,因为 VALUES 是按函数中的位置分配的,其定义如下
def greeting(a,b=7):
pass
而不是
def greeting(a=4,b):
pass
我对内置 range()
函数的疑问是我们可以按如下方式传递参数
range(start_value,stop_value,increment_value)
并且在调用函数时并非所有参数都需要,那么 range()
函数是重载函数,还是定义中有默认参数?
解决方法
range
获取三个参数并检查参数计数然后返回生成的可迭代对象
如果你想做类似的事情,所以你应该用 *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,step
# and return result
P。 S。 如果你想用默认参数定义函数,那么默认参数应该在其他参数之前定义