2013-10-30 30 views
0

我有這樣的很少,簡單,如果塊小:Python:long如果表達式vrs。如果塊

if obj_type == "domain": 
    key = "domain" 
elif obj_type == "db_user": 
    key = "username" 
else: 
    key = "name" 

這些可以轉換爲一個if語句:
key = "domain" if obj_type == "domain" else "usernme" if obj_type == "db_user" else "name"

是否有任何性能上的優勢是什麼?如果這不是一個因素,哪一個人應該首選可讀性PEP8合規性?

回答

6

它們的表現完全相同,所以如果您需要在兩者之間進行選擇,請使用第一個。

既然你真的只是創建兩個集之間的映射,使用字典將是一個更好的方法。它更快,可以說更具可讀性:

mapping = { 
    'domain': 'domain', 
    'db_user': 'username', 
} 

key = mapping.get(obj_type, 'name') 
+1

擊敗我吧。 +1 – ApproachingDarknessFish

+1

「if ... else」塊具有覆蓋測試更方便的優點。 – fjarri

+0

優雅,易於擴展,非常棒! –