Где я могу разместить общий код для if и elif? - PullRequest
0 голосов
/ 09 апреля 2010

Для примера ниже:

 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

Любое другое чистящее средство?

Ответы [ 3 ]

4 голосов
/ 09 апреля 2010

Альтернатива (1): поместите свои 5 строк в функцию и просто вызовите ее

Альтернатива (2)

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

чуть менее многословно, чем ваш код

1 голос
/ 09 апреля 2010

Помните, что с функциями у вас могут быть локальные функции с замыканием. Это означает, что вы можете избежать передачи повторяющихся аргументов и при этом изменять локальные параметры. (Только будьте осторожны с назначениями в этой локальной функции. Также смотрите ключевое слово nonlocal в Python 3.)

def some_func(a):
  L = []

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

  if a == 100:
    append()
    #...
  elif a == 200:
    append()
    #...
1 голос
/ 09 апреля 2010
def five_lines(arg):
  ...

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