有什么方法可以将 if 语句放在函数调用参数中吗?

Lin*_*htz 5 python

我发现我们可以在函数调用参数中使用三元运算:

def foo(n):
    print(n)
Run Code Online (Sandbox Code Playgroud)
a, b = 1, 2
foo(a if a>b else b)
# prints 2
Run Code Online (Sandbox Code Playgroud)

我想知道有没有一种方法可以在函数调用参数中使用 if 而不使用 else ?因此,如果它是真的,则将 a 传递给它,如果不是,则不要传递任何内容。

我试过了

foo(a if a>b else pass)
foo(a if a>b)
foo(if a>b: a)
foo(a>b and a)
Run Code Online (Sandbox Code Playgroud)

以上都不起作用。

感谢您的帮助。

编辑 - - -

抱歉,让我重新表述一下我的问题。

我要求的是一种确定是否应该根据条件传递参数的方法。

所以基本上我必须调用一个需要大量 kwargs 的大函数,比如:

# function call
thefunc(
    a=1,
    b=2,
    c=3,
    d=4,
    e=5
    #...
)
Run Code Online (Sandbox Code Playgroud)

所有参数都是由我决定的选项,或者在某些情况下是一个条件。

由于参数列表太大,因此不建议在 if 语句内编写函数调用,所以我需要知道是否有办法,例如:

thefunc(
    a=1,
    #if condition: b=2,
    c=3,
    ....
)
Run Code Online (Sandbox Code Playgroud)

所以要确定是否给kwarg。如果没有也没关系,只是需要知道,谢谢。

Rem*_*ich 4

如果您不介意一些丑陋,您可以... * 语法将值列表转换为参数,因此您可以使用:

foo(*[a] if a > b else [])
Run Code Online (Sandbox Code Playgroud)

你是否应该是另外一回事:-)