2015-08-13 2 views
1

Мне было интересно, что это рекомендуемый способ или лучший способ оптимизации между двумя различными функциями.Лучшая структура для оператора if в Python

Первый (что я бы лично выбрать):

def myFunction1(aParameter): 
    if aParameter == 0: 
     result = 42 
    elif aParameter == 1: 
     result = 0 
    else: 
     result = None 

    return result 

Второй:

def myFunction2(aParameter): 
    if aParameter == 0: 
     return 42 
    if aParameter == 1: 
     return 0 
    return None 

Если я не ошибаюсь, поведение обеих функций должны быть такими же, так что вы бы порекомендовали?

Спасибо заранее! :)

Edit:

Спасибо за ваши быстрые ответы. Я понимаю, что этот вопрос может быть основан на мнениях. Мне просто интересно, есть ли какая-либо рекомендация PEP по этому поводу или один из двух способов, которые видятся гораздо чаще, чем другие. Кроме того, о производительности, я хотел знать, является ли байт-код сгенерированным одинаковым или нет.

+0

Это зависит от того, что вы хотите сделать. – muddyfish

+4

Я думаю, что первое было бы легче отладить в случае проблем ... и именно поэтому я проголосовал за то, чтобы закрыть это как «в первую очередь мнение», потому что очевидно, что здесь нет «правильного» ответа. – larsks

+1

Это может быть лучше подходит для обмена стеками кода обзора? http://codereview.stackexchange.com/ – LexyStardust

ответ

12

Если это всего лишь три пути, то в любом случае, возможно, хорошо. Общепринятый питонический способ, когда вы начинаете иметь больше путей (которые будут обрабатываться оператором switch на других языках), обычно имеет хеш.

def myFunction1(aParameter): 
    values = {0:42,1:0} 
    return values.get(aParameter,None) 
+3

Кроме того, 'None' является избыточным параметром, поскольку он по умолчанию. – bereal

1

Я предпочитаю второй вариант, потому что он должен быть быстрее, он чище, и его легче читать и отлаживать.

Смежные вопросы