簡體   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