gpt4 book ai didi

python - Python 包装函数

转载 作者:行者123 更新时间:2023-11-30 23:44:45 24 4
gpt4 key购买 nike

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")

我在一本书中找到了这段代码,并按照它所说的方式运行了它......

suppress(myfunc)

书上说它应该运行该函数,但抑制其中的错误,该错误位于 print("foo")相反,它只是给了我...

<function myfunc at 0x6981e0>

为什么???

最佳答案

您的 suppress 函数被设计为装饰器,因此您需要将其应用到您的函数/方法中。惯用的方法是使用 @ 语法,就像使用 functools.wraps 一样。

import functools

def suppress(func):
@functools.wraps(func)
def wrapper(*args, **kwargs):
try:
return func(*args, **kwargs)
except Exception:
pass
return wrapper

@suppress # <-------- this is the idiomatic fix
def myfunc():
"documentation"
print("foo")
raise ValueError

def myfunc2():
"documentation"
print("foo")
raise ValueError

myfunc() # prints "foo", does not raise exception
print myfunc.__doc__ # prints "documentation"

suppress(myfunc2)() # functional style; prints "foo", does not raise exception
print suppress(myfunc2).__doc__ # prints "documentation"

关于python - Python 包装函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9949678/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com