是否有操作員或庫函數,使得v ??? d
如何提供默認值iff值爲None?
- 評估爲
v
如果v
是從None
不同的和不評估d
,或 - 評估爲
d
如果v
等於None
。
(其中???
表示我要找的操作員)。
運營商or
幾乎是我想要的,但如果v
是False
,它將評估爲默認值。只有在參數爲None
時,我才需要默認值,以便False ??? d
的計算結果爲False
。
更新:要澄清,在我的情況v
是一個複雜的表情,像computeSomethingLong() ??? d
。所以我不能使用
computeSomethingLong() if computeSomethingLong() is not None else d
我不得不這樣做
tempvar = computeSomethingLong()
tempvar if tempvar is not None else d
這感覺很彆扭,相比computeSomethingLong() or d
。
更新:我得到的最接近是定義我自己的函數:
def orElse(v, deflt):
if v is not None:
v
else:
deflt
但缺點是deflt
總是評價過!如果實際需要,我只想要評估。特別是,我想在
firstLongComputation() ??? secondLongComputation()
第一次計算評估;如果結果不是None
,則返回。否則,第二個被疏散(只在這種情況下),這將是表達式的結果。
如果v = d,你想要做什麼?這種情況沒有預料,對吧? – Jblasco
@Jblasco它並不重要。如果'v'是'None',我只需要評估'd',所以我們不能比較這些值來決定什麼。 –
對不起,但它很重要。如果你想v = d當且僅當v = None時,如果從v = d開始,你需要給v另一個值。只有當v永遠不會從一開始,這個討論並不重要。 – Jblasco