将函数输入的默认值设置为Python中的另一个输入

时间:2010-08-20 19:49:20

标签: python function default-value keyword-argument

考虑以下函数,它在Python中不起作用,但我将用它来解释我需要做什么。

def exampleFunction(a, b, c = a):
    ...function body...

除非指定了替代值,否则我想为变量c指定与变量a相同的值。上面的代码在python中不起作用。有没有办法做到这一点?

谢谢。

3 个答案:

答案 0 :(得分:24)

def exampleFunction(a, b, c = None):
    if c is None:
        c = a
    ...function body...

关键字参数的默认值不能是变量(如果是,则在定义函数时将其转换为固定值。)通常用于将参数传递给main函数:

def main(argv=None):
    if argv is None:
        argv = sys.argv

答案 1 :(得分:13)

这种一般模式可能是最好的和最具可读性的:<​​/ p>

def exampleFunction(a, b, c = None):
    if c is None:
        c = a
    ...

您必须注意None不是c的有效状态。

如果您想支持“无”值,您可以执行以下操作:

def example(a, b, *args, **kwargs):
    if 'c' in kwargs:
        c = kwargs['c']
    elif len(args) > 0:
        c = args[0]
    else:
        c = a

答案 2 :(得分:1)

一种方法是:

def foo(a, b, c=None):
    c = a if c is None else c
    # do something