我需要做很多次以下事情:
value1 = kwargs.get('par1')
if value1 is not None: value1 = int(value1)
是否可以直接.get
通过过滤器返回的值(int
在这种情况下),只有在匹配的情况下?
我当然可以为此实现一个函数,但我想知道是否有更 Pythonic 的方式来实现它。
我需要做很多次以下事情:
value1 = kwargs.get('par1')
if value1 is not None: value1 = int(value1)
是否可以直接.get
通过过滤器返回的值(int
在这种情况下),只有在匹配的情况下?
我当然可以为此实现一个函数,但我想知道是否有更 Pythonic 的方式来实现它。
您可以通过扩展来实现自己的字典,UserDict
但您需要包装kwargs
,这有点贵(因为kwargs
通常很小但仍然......)。
您总是可以调用int()
并捕获异常,但这也会很慢。
你不能猴子补丁dict
,因为它是一个内部类型。否则,您可以说新功能dict.getInt = getAsInt
在哪里。getAsInt
您可以使用int(kwargs['par1']) if par1 in kwargs else None
,但这会搜索字典两次。
我会为此使用一个新功能:
def asInt(v): return None if v is None else int(v)
value1 = asInt(kwargs['par1'])
假设你的意思是if value1 is not None
:
value1 = int(kwargs['par1']) if 'par1' in kwargs else None