Python if和elif的通用代码放在哪里?

Python if和elif的通用代码放在哪里?,python,conditional,Python,Conditional,对于以下示例: if a == 100: # Five lines of code elif a == 200: # Five lines of code 五行代码很常见,重复使用如何避免? 我知道如何把它变成一个函数 或 还有其他更干净的解决方案吗?备选方案(1):将5行代码放在一个函数中,然后调用它 备选案文(2) 比您的代码稍微简单一点备选方案(1):将5行代码放在一个函数中,然后调用它 def five_lines(arg): ... if a in [1

对于以下示例:

 if a == 100:
     # Five lines of code
 elif a == 200:
     # Five lines of code
五行代码很常见,重复使用如何避免? 我知道如何把它变成一个函数

还有其他更干净的解决方案吗?

备选方案(1):将5行代码放在一个函数中,然后调用它

备选案文(2)

比您的代码稍微简单一点备选方案(1):将5行代码放在一个函数中,然后调用它

def five_lines(arg):
  ...

if a in [100,200]:
    five_lines(i)
备选案文(2)


比您的代码稍微简单一点

记住,对于函数,您可以使用带有闭包的本地函数。这意味着您可以避免传递重复的参数,并且仍然可以修改局部变量。(只需小心本地函数中的赋值。另请参见Python 3中的
非本地
关键字。)

def five_lines(arg):
  ...

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

请记住,对于函数,可以使用带有闭包的局部函数。这意味着您可以避免传递重复的参数,并且仍然可以修改局部变量。(只需小心本地函数中的赋值。另请参见Python 3中的
非本地
关键字。)


我想说,第二个解决方案已经相当干净和简单了。把这5行放在一个简单的函数中会使它更干净。我想说第二个解决方案已经相当干净和简单了。将这5行放在一个简单的函数中会使它更干净。@paxdiablo:the
else
只是省略了多余的内容,因此在中使用
。为什么在你看来这很可怕?我不太喜欢双重如果(这只是主观的东西,不是福音)。我更喜欢将任何大小合适的通用性重构成一个函数。@paxdiablo:the
else
只是省略了多余的部分,因此
中的用法仍然存在。为什么在你看来这很可怕?我不太喜欢双重如果(这只是主观的东西,不是福音)。我更喜欢将任何大小合适的通用性重构成函数。你是说
if
而不是
for
?你是说
if
而不是
for
def five_lines(arg):
  ...

if a in [100,200]:
    five_lines(i)
def some_func(a):
  L = []

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

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