如果它是None,则不能将kwarg传递给函数

mrF*_*les -3 python python-3.x

在我的python中,我正在编写一个需要的函数**kwargs.我遇到的问题是我经常None作为关键字值传递,这感觉就像糟糕的风格.例如:

def foo(**kwargs):
    if 'bar' in kwargs:
        return kwargs['bar'] 

def baz(x=None):
    print(foo(bar=x))
Run Code Online (Sandbox Code Playgroud)

这里的问题是,如果x是None,那么我希望它只是不打印.kwargs如果关键字参数为None,如何将其添加到关键字参数中?

Mar*_*ers 5

如果None不是可接受的值,请测试.要么不传递xbaz(),如果是None,或者明确地测试Nonefoo.您可以为键和值没有被合并的测试None,使用dict.get():

def foo(**kwargs):
    bar = kwargs.get('bar')
    if bar is not None:
        return bar
    # return something else
Run Code Online (Sandbox Code Playgroud)

或者只是使用条件表达式来返回默认值,如空字符串:

def foo(**kwargs):
    bar = kwargs.get('bar')
    return bar if bar is not None else ''
Run Code Online (Sandbox Code Playgroud)

或者返回任何false-y值的默认值(None,空列表0等):

def foo(**kwargs):
    return kwargs.get('bar') or ''
Run Code Online (Sandbox Code Playgroud)