2013-10-08 3 views
0

Мне нужно определить функцию в зависимости от условия, чтобы она либо делала что-то, либо ничего.Определение функции, которая ничего не делает

например.

# Code block that *defines* bar 
if condition: 
    bar = do_stuff 
else: 
    bar = # ? 
# End of the definition of bar 

bar() 

do_stuff есть функция, определенная где-то еще, что делает некоторые полезные вычисления. Я хочу, чтобы bar() было определено, чтобы ничего не делать, если указанное выше условие не выполняется. Есть идеи?

Примечание: Я разработал блок выше для целей иллюстрации если-то. Я знаю, что могу просто позвонить do_stuff() в корпус if и pass в корпус else. Вышеприведенный код просто иллюстрирует блок кода, после которого мне нужно определить bar, чтобы что-то сделать или ничего не делать. Блок просто определяет функцию и не предназначен для ее вызова.

+4

Просто оставьте предложение 'else:' целиком или положите в него оператор 'pass'. –

+3

@TimPeters: Похоже, он хочет присвоить какую-либо функцию функции 'bar', поэтому он должен присвоить имя чему-то, чтобы позже избежать использования NameError. – BrenBarn

+0

@TimPeters Вы прочитали мою ** Примечание **? – Josh

ответ

5

Чтобы установить переменную bar быть функцией, которая ничего не делает, есть два варианта:

  • Используя lambda:

    bar = lambda: None 
    
  • Использование функции Определить ион:

    def bar(): 
        pass 
    

Вы также можете использовать return None вместо pass для определения функции, поведение эквивалентно.

5

Вы можете сделать функцию, которая ничего не делает с:

def func(): 
    pass 
+3

Поскольку мы не знаем, что такое args 'do_stuff', вы можете вместо этого использовать' def func (* args, ** kwargs)'. Опять же, вы не можете. :) – abarnert

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