使用Python 2.7返回None,我有以下代碼:解壓一個元組與單一元件,或者如果元組是無
if result != None:
(data,) = result
return data
return None
的result
變量從一個sqlite3的查詢僅返回一個返回值。如果查詢返回結果,我想解包並返回數據,否則我想返回None。上面的代碼看起來過於冗長,完全沒有pythonic。有沒有更好的辦法?
使用Python 2.7返回None,我有以下代碼:解壓一個元組與單一元件,或者如果元組是無
if result != None:
(data,) = result
return data
return None
的result
變量從一個sqlite3的查詢僅返回一個返回值。如果查詢返回結果,我想解包並返回數據,否則我想返回None。上面的代碼看起來過於冗長,完全沒有pythonic。有沒有更好的辦法?
你可以使用一個if
else
條件:
return result[0] if result is not None else None
或簡化這歸因於:
return result[0] if result else None
,如果你不關心result
可能是一些其他的false-y value如一個空的元組等等。還有一個更緊湊的方式
if result is not None:
return result[0]
return None
:
的一種方式可能是這樣做:
return (result or [None])[0]
但第一個更清楚。
請避免在最後使用分號(不是C代碼),並閱讀python文檔可以幫助你。這是一個很花時間。
我想沒有答案是不完整的try/except
:
try:
return result[0]
except TypeError,IndexError:
return None
除此之外,你離開了;
和result != None
應result is not None
被替換的事實,我有你的代碼沒有問題。
這很簡單,很容易理解,如果你的請求返回2個或更多元素,它們不會默默地失敗:它會引發異常而不是默默地返回第一個元素,就像迄今爲止所有的解決方案一樣。
你可以擺脫這些沒有pythonic的無用的';':-) – Emmanuel
「unpythonic-ness」的一部分是在行末尾的分號... – mgilson
我是一個芭比女孩生活在C/C#世界中。去除分號,哈哈。 – Chris