2010-04-09 130 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

相关问题