Назначение pass функции в Python
у меня есть кусок кода, который определяет функцию, которая принимает функцию в качестве аргумента, например, так:
def stuff(n, f):
f(n)
теперь я хочу предоставить некоторое значение по умолчанию f, которое ничего не делает. Поэтому я решил использовать pass, например:
def stuff(n, f = None):
if(f is None):
f = pass
f(n)
но это не компиляции. Как мне это сделать?
6 ответов
на pass
- ключевое слово для интерпретатора, держатель места для ничего другого. Это не объект, который можно присвоить. Вы можете использовать лямбду без операции.
f = lambda x: None
немного короче:
def stuff(n, f=None):
f = f or (lambda x: None)
f(n)
или еще лучше:
def stuff(n, f=None):
f(n) if f is not None else None
вы не можете assing пустой. Но вы можете создать внутреннюю функцию, которую вы назначите f
.
def stuff(n, f=None):
def empty(n):
pass
if f is None:
f = empty
f(n)
Я бы пошел с
def nop(*args, **kwargs):
pass
def algo(func=nop):
do_something()
func()
do_something_else()
algo() # nop is called
algo(some_callback) # some_callback is called
IMHO выглядит чище, чем
if foo:
foo()