这个(冗余?)python表达式的含义是什么?

rut*_*ord 2 python testing logic expression

str='test'
example={'test':'value',}
return str in example and example[str] or None
Run Code Online (Sandbox Code Playgroud)

为什么看似多余的额外的测试关键strexample

jdi*_*jdi 6

在此特定示例中,检查是首先确保'test'实际上是示例dict中的有效键,否则您将获得KeyError异常.然后逻辑继续检查键并返回它,或者如果示例[str]的值变为False则返回None

如果这个例子只是这样做会容易得多:

str='test'
example={'test':'value',}
return example.get(str, None) or None
Run Code Online (Sandbox Code Playgroud)

更新

更简单,因为不需要get()的额外参数:

return example.get(str) or None
Run Code Online (Sandbox Code Playgroud)

更新2:从OP中分解真值测试和布尔操作(基于注释)

example = {
    'test' : 'value', 
    'test2': 0, 
    'test3': [],
}
test = lambda k: k in example and example[k] or None
print test('test')
# value
print test('test2')
# None
print test('test3')
# None
Run Code Online (Sandbox Code Playgroud)