我有一个带有四个参数a
、b
、c
和d
的函数,如下所示。
def myfunc(a=None,b=None,c=None,d=None):
if <check which are not None>:
myfunc2(<pass those which are not None>)
我需要在此函数内调用另一个函数myfunc2
,但只使用用户在myfunc
中传递的那些参数。例如,如果用户在myfunc
中传递a
和d
的值,那么我需要像这样调用myfunc2
:
myfunc2(a=a, d=d)
有没有一种简单的方法可以做到这一点,而不是为所有可能的a,b,c,d
组合编写if
用例
发布于 2021-11-02 20:55:53
您可以使用字典理解来创建一个带有not none参数的字典,并通过解包将其传递给myfunc2
。
def myfunc(a=None,b=None,c=None,d=None):
params = {
"a": a,
"b": b,
"c": c,
"d": d,
}
not_none_params = {k:v for k, v in params.items() if v is not None})
myfunc2(**not_none_params)
发布于 2021-11-02 20:39:51
def myfunc(**kwargs):
myfunc2(**{k:v for k, v in kwargs.items() if v is not None})
如果您想使用指定的4个默认参数保留函数的调用签名,您可以这样做:
def myfunc(a=None, b=None, c=None, d=None):
def f(**kwargs):
return myfunc2(**{k:v for k, v in kwargs.items() if v is not None})
return f(a=a, b=b, c=c, d=d)
https://stackoverflow.com/questions/69819727
复制相似问题