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

Cur*_*arn 21 python function default-value keyword-argument

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

def exampleFunction(a, b, c = a):
    ...function body...
Run Code Online (Sandbox Code Playgroud)

这是我想为变量分配变量c所需的值a,除非指定了替代值.上面的代码在python中不起作用.有没有办法做到这一点?

谢谢.

Nic*_*k T 29

def example(a, b, c=None):
    if c is None:
        c = a
    ...
Run Code Online (Sandbox Code Playgroud)

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

def main(argv=None):
    if argv is None:
        argv = sys.argv
Run Code Online (Sandbox Code Playgroud)


car*_*arl 15

这种一般模式可能是最好的和最可读的:

def exampleFunction(a, b, c = None):
    if c is None:
        c = a
    ...
Run Code Online (Sandbox Code Playgroud)

你必须小心,这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
Run Code Online (Sandbox Code Playgroud)

  • +1提及`None`不能成为`c`的有效状态,因为`c = None`技巧可以工作. (2认同)