我发现我们可以在函数调用参数内使用三元运算符:
def foo(n):
print(n)
a, b = 1, 2
foo(a if a>b else b)
# prints 2
我想知道是否有一种方法可以在函数调用参数中没有else的情况下使用?因此,如果它是真的,则将a传递给它,否则,不要传递任何东西。
我尝试过
foo(a if a>b else pass)
foo(a if a>b)
foo(if a>b: a)
foo(a>b and a)
以上都不起作用。
感谢您的帮助。
编辑-----
抱歉,让我改一下我的问题。
我要的是一种根据条件确定是否应该传递参数的方法。
所以基本上我必须调用一个需要很多kwarg的大函数,例如:
# function call
thefunc(
a=1,
b=2,
c=3,
d=4,
e=5
#...
)
所有args都是我自己决定的选项,或者在某些情况下取决于条件。
由于参数列表太大,因此不希望在if语句中编写函数调用,所以我需要知道有一种方法可以说:
thefunc(
a=1,
#if condition: b=2,
c=3,
....
)
因此,确定是否要使用kwarg。没关系,只需要知道,谢谢。
答案 0 :(得分:1)
三元运算符需要if-和else-子语句。可以尝试使用默认函数参数来代替仅使用-if:
def foo(n=None):
根据需要将None
传递给函数:
foo(a if a > b else None)
然后在内部检查None
-非None
参数:
def foo(n=None):
if n:
print(n)
答案 1 :(得分:1)
You can if you don't mind some ugliness... The * syntax turns a list of values into parameters, so you could use:
foo(*[a] if a > b else [])
Whether you should is something else :-)