我不小心为关键字dict
分配了一个字典,现在它已经导致dict object not callable
。那么如何在不重新启动内核的情况下重新分配功能呢?
答案 0 :(得分:3)
dict
是内置的。 内置组合在builtin
包中组合在一起。所以你可以使用:
import builtins
dict = builtins.dict
建议是永不覆盖内置:不要分配给名为list
,dict
,set
,int
的变量, float
等等。
话虽如此,您也可以从范围中删除dict
。在这种情况下,Python将在内置组件上回退。所以你删除变量:
temp_dict = dict
del dict # remove the `dict`, now it will delegate to the `dict` builtin
例如:
>>> dict = {}
>>> dict
{}
>>> del dict
>>> dict
<class 'dict'>
所以你将它从范围中删除,然后Python再次将它绑定到&#34;外部&#34;范围。
答案 1 :(得分:2)
覆盖Python中的关键词是一个坏主意。
如果你想要回头,请使用:
from builtins import dict
d = dict()
但是这些代码会再次覆盖你定义的dict。因此,您可以使用以下代码来控制范围:
dict = lambda: 'damn it, I override the buildins'
d = dict()
print(d)
from contextlib import contextmanager
@contextmanager
def get_dict_back():
import builtins
yield builtins.dict
with get_dict_back() as build_dict:
d = build_dict({'a': 1})
print(d)
print(dict())
buildin dict仅在with语句中可用。
输出:
damn it, I override the buildins
{'a': 1}
damn it, I override the buildins