我set在交互式python会话中使用它作为变量名称而意外地覆盖了 - 有没有什么办法可以在set不重新启动会话的情况下访问原始函数?
(我在那个会话中有很多东西,我宁愿不必这样做,虽然我当然可以在必要的时候.)
我知道命名一个与Python内置函数同名的变量是个坏主意.但是如果一个人不知道要避免的所有"禁忌"变量名称(例如list,set等等),是否有办法让Python至少阻止你(例如通过错误消息)破坏内置函数?
例如,下面的命令行4允许我覆盖/损坏内置函数,set()而不会阻止我/产生错误.(这个错误一直没有被注意到,直到它被set()调用到下面的命令行6.).理想情况下,我希望Python在命令行4停止我(而不是等到命令行6).
注意:以下执行是在Python 2.7(iPython)控制台中执行的.(Anaconda Spyder IDE).
In [1]: myset = set([1,2])
In [2]: print(myset)
set([1, 2])
In [3]: myset
Out[3]: {1, 2}
In [4]: set = set([3,4])
In [5]: print(set)
set([3, 4])
In [6]: set
Out[6]: {3, 4}
In [7]: myset2 = set([5,6])
Traceback (most recent call last):
File "<ipython-input-7-6f49577a7a45>", line 1, in <module>
myset2 = set([5,6])
TypeError: 'set' object is not callable
Run Code Online (Sandbox Code Playgroud)
背景:我正在遵循HackerRank Python Set Challenge的教程.本教程涉及创建一个变量valled set(与Python内置函数同名).我逐行完成了教程,并得到了"set object …