Python 3.x 当内联if调用失败时,Python能否使用函数默认参数?

Python 3.x 当内联if调用失败时,Python能否使用函数默认参数?,python-3.x,Python 3.x,如果我有一个变量,它有一个我不想传递给函数的值,那么在没有几个If的情况下,特别是当有几个变量可能需要传递,也可能不需要传递时,是否可以这样做? 采取以下行动: def test(param=""): ...do stuff x = None test(x if x else ?) ^ What can i put here so it defaults to the default in the function d

如果我有一个变量,它有一个我不想传递给函数的值,那么在没有几个If的情况下,特别是当有几个变量可能需要传递,也可能不需要传递时,是否可以这样做? 采取以下行动:

def test(param=""): ...do stuff x = None test(x if x else ?) ^ What can i put here so it defaults to the default in the function definition? def测试(参数=”): …做事 x=无 测试(如果x是其他的话?) ^ 我可以在这里放些什么,这样就可以了 默认为中的默认值 函数定义? 如果这是不可能的,那么当存在多个可能需要或可能不需要传递的变量而不是大量的ifs时,是否有一种快速的方法来实现这一点?

基本答案:

if(x): test(x)
else: test()
使用*args,您可以传入任意多的变量,但我认为这对您没有帮助。我能想到的最好的方法是多个ifs(不幸的是,Python不允许重载)

这看起来像:

if x:
    if y:
        if z: test(x,y,z)
        else: test(x,y)
    else: test(x)
else: test()
例如,您不能调用test(x,z)或test(y)的原因是因为您的方法在签名中采用了特定的顺序,因此您无法指定在函数调用时传入的参数。在Java中,可以通过重载和不同的参数类型来实现,但这里不行