繁体   English   中英

if 块中的 if 表达式变量

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM