我有一个有趣的(可能是愚蠢的)想法:如果我使用内置函数名作为变量来分配一些对象(比如整数)会发生什么。这是我试过的:
>>> a = [1,2,3,4]
>>> len(a)
4
>>> len = 1
>>> len(a)
Traceback (most recent call last):
File "<stdin>", line 1, in ?
TypeError: 'int' object is not callable
似乎python不会以不同方式处理函数和变量名。如果不重新启动python解释器,有没有办法将len
分配回函数?或撤消作业len = 1
?
答案 0 :(得分:17)
使用del len
:
>>> a=[1,2,3,4]
>>> len=15
>>> len(a)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'int' object is not callable
>>> del len
>>> len(a)
4
删除名称会删除该名称与本地名称空间或全局名称空间的绑定,具体取决于名称是否出现在同一代码块中的全局语句中。如果名称未绑定,则将引发NameError异常
答案 1 :(得分:12)
从技术上讲,您可以从__builtin__
from __builtin__ import len
但请不要说出len
的内容,这会让明智的程序员生气。
好的,首先不要在内置命令之后命名变量,其次如果你想尊重其他函数,那么尊重命名空间,例如
import time
time.asctime()
asctime = 4253
time.asctime() # Notice that asctime here is unaffected as its inside the time module(s) namespace