考虑以下函数,它在Python中不起作用,但我将用它来解释我需要做什么。
def exampleFunction(a, b, c = a):
...function body...
除非指定了替代值,否则我想为变量c
指定与变量a
相同的值。上面的代码在python中不起作用。有没有办法做到这一点?
谢谢。
答案 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