这是一个常见的习语:
if foo.get("bar"):
bar = foo.get("bar")
# DO something with bar
相反,我想说点像
if foo.get("bar") as bar:
# DO something with bar
有没有办法在Python中说这个?
答案 0 :(得分:4)
不,没有。
bar = foo.get('bar')
if bar:
...
del bar
答案 1 :(得分:2)
没有这样的语法,没有。对于词典,您通常使用会员资格测试:
if 'bar' in foo:
bar = foo['bar']
这是大多数初学Python程序员认为if foo.get('bar')
所做的事情,但是空值(例如{'bar': 0}
)在这里也是假的。
对于您确实想要跳过缺少的键和空值的边缘情况,您只需使用.get()
:
bar = foo.get('bar')
if bar:
#
如果你打算将值存储在局部变量中,后者可能更好,但是你要测试is not None
以允许其他假值:
bar = foo.get('bar')
if bar is not None:
#
没有必要两次调用.get()
,当你已经确定'bar'
密钥存在时,肯定不会。
答案 2 :(得分:1)
这有点像黑客,但这很有效。
In [17]: if [bar for bar in [foo.get('bar')] if bar]:
....: print bar
无法在python3中运行