def suppress(func):
@functools.wraps(func)
def wrapper(*args, **kwargs):
try:
return func(*args, **kwargs)
except Exception:
pass
return wrapper
def myfunc():
print("foo")
print("foo")
Я нашел этот код в книге, и побежал, как он сказал ...Упаковочный Функция Python
suppress(myfunc)
Книга говорит, что должен был выполнить функцию, но подавить в ней ошибку, который был в print("foo")
Вместо этого, он просто дал мне ...
<function myfunc at 0x6981e0>
Почему ???
Потому что это то, что «подавляет»: он принимает одну функцию и дает вам другую функцию. Если вы хотите вызвать эту функцию, перейдите прямо вперед, назовите ее: 'suppress (myfunc)()' (обратите внимание на дополнительные скобки в конце этого вызова функции. – kindall