函数参数的默认值,如range()

时间:2015-04-10 23:53:12

标签: python

如果我在python中调用range(1),则第一个参数是' max'范围的论证。对于范围(1,2,3),第一个参数是' min'范围的论证。我如何为自己定义一个函数,如第一个参数的含义取决于所有参数的计数?

2 个答案:

答案 0 :(得分:1)

您可以这样做(使用range实现作为示例):

def range(start, stop=None, step=1):
   if stop is None:
       start, stop = 0, start
    while start < stop:
        yield start
        start += step

答案 1 :(得分:0)

您可以使用*args并检查其大小:

def f(*args):
    if len(args) == 1:
        return "One argument shows the value: {}".format(args[0])
    elif len(args) == 2:
        return "Two arguments sums the values: {}".format(args[0] + args[1])
    return "Everything else does nothing"

确实:

>>> f()
'Everything else does nothing'
>>> f(0)
'One argument shows the value: 0'
>>> f(1, 1)
'Two arguments sums the values: 2'
>>> f(1, 2, 3)
'Everything else does nothing'