2010-04-09 94 views
0

對於下面的例子:我在哪裏可以爲if和elif添加通用代碼?

if a == 100: 
    # Five lines of code 
elif a == 200: 
    # Five lines of code 

五行代碼是常見的,重複我怎樣才能避免呢? 我知道把它的功能

if a == 100 or a == 200: 
    # Five lines of code 
    if a == 100: 
     # Do something 
    elif a == 200: 
     # Do something 

任何其他清潔的解決方案?

+7

我會說第二個解決方案已經相當乾淨和簡單了。把5條線放在一個簡單的函數中會使它更加清潔。 – 2010-04-09 06:22:26

回答

1

請記住,使用函數,您可以使用閉包的本地函數。這意味着您可以避免傳遞重複的參數並仍然修改當地人。 (請注意本地函數中的任務,另請參閱Python 3中的nonlocal關鍵字。)

def some_func(a): 
    L = [] 

    def append(): 
    L.append(a) # for the sake of example 
    #... 

    if a == 100: 
    append() 
    #... 
    elif a == 200: 
    append() 
    #... 
4

替代(1):把你的5條線的功能,只是把它

替代(2)

if a in (100, 200): 
    # five lines of code 
    if a == 100: 
     # ... 
    else: 
     # ... 

比你的代碼變得更簡潔

+1

+1替代1.替代2是可怕的:-) – paxdiablo 2010-04-09 06:21:11

+1

@paxdiablo:'else'只是省略了多餘的,所以'in'的用法依然存在。爲什麼你覺得這很醜陋? – 2010-04-09 06:24:47

+0

我不是雙重ifs(這只是一個主觀的東西,這不是福音)的大粉絲。我寧願將任何體面大小的通用性重構成一個函數。 – paxdiablo 2010-04-09 06:48:06

1
def five_lines(arg): 
    ... 

if a in [100,200]: 
    five_lines(i) 
+1

你的意思是'if'而不是'for'? – 2010-04-09 06:45:44

+0

是的。感謝捕捉。 – ghostdog74 2010-04-09 07:00:29

相關問題