Назначение 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()