[英]If expression variables inside if block
这是一个常见的成语:
if foo.get("bar"):
bar = foo.get("bar")
# DO something with bar
相反,我想说类似的话
if foo.get("bar") as bar:
# DO something with bar
在 Python 中有什么方法可以这么说吗?
不,那里没有。
bar = foo.get('bar')
if bar:
...
del bar
没有这样的语法,没有。 对于字典,您通常会改用成员资格测试:
if 'bar' in foo:
bar = foo['bar']
if foo.get('bar')
这样做,这是大多数 Python if foo.get('bar')
想法,但空值(例如{'bar': 0}
)在这里也为假。
对于您确实想要跳过缺少的键和空值的边缘情况,您可以使用.get()
once :
bar = foo.get('bar')
if bar:
#
如果您无论如何都要将值存储在局部变量中,后者可能更可取,但您要测试is not None
以允许其他虚假值:
bar = foo.get('bar')
if bar is not None:
#
没有必要调用.get()
两次,当然不是当您已经确定'bar'
键存在时。
这有点黑客,但这是有效的。
In [17]: if [bar for bar in [foo.get('bar')] if bar]:
....: print bar
在python3中不起作用
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.