KeyError: '__wrapped'
时间: 2024-09-24 17:27:39 浏览: 63
KeyError: '__wrapped__' 是Python中字典(dict)相关异常的一种。当试图通过键访问字典时,如果该键不存在,就会抛出这个错误。`__wrapped__`通常是某些装饰器(如functools.wraps)内部使用的属性,用于保存原始函数的信息。当你尝试访问一个已经被装饰器包装过的函数,并且提供的键不是原始函数的实际键,而是像`__wrapped__`这样的内部属性时,会引发KeyError。
例如,如果你有一个被wraps装饰的函数:
```python
from functools import wraps
def my_decorator(func):
@wraps(func)
def wrapper(*args, **kwargs):
print("Before function call")
return func(*args, **kwargs)
return wrapper
@my_decorator
def original_function():
pass
# 如果直接用 'original_function' 的 key 访问字典,会触发 KeyError
try:
my_dict = {"__wrapped__": original_function}
my_dict[original_function] # 这里会失败,因为实际键是函数对象本身
except KeyError as e:
print(e) # KeyError: '__wrapped__'
```
阅读全文