簡體   English   中英

表達這個的更短的方式? 如果否則B,C = A.

[英]A shorter way to express this? C = A if A else B

我發現自己重復了很多:

val = x if x else y

有時x會深入到類或字典中的幾個級別,所以它會變得很長:

val = obj.elements[0].something if obj.elements[0].something else y

它看起來很難看,迫使我打字更多。 任何已知的縮短方法? 也許像這樣的內置存在?

val = first_try(x, y)

我想我可以很容易地寫自己的,但希望內置。

first_try = lambda x,y: x if x else y

or運算符返回轉換為True的第一個參數:

val = x or y

例如:

>>> None or 'OK'
'OK'

這對我來說似乎是試圖讓代碼變得有點過於簡潔。 我可能會這樣做:

x = a.b.c.d[0]
val = x if x else y

一條額外的線,一次消化很少。

getattr與可選的default參數一起使用。 在上面的長例中,這將是:

val = getattr(obj.elements[0], 'something', y)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM