在python中使用函数名作为变量

时间:2013-01-03 22:58:50

标签: python

我有一个有趣的(可能是愚蠢的)想法:如果我使用内置函数名作为变量来分配一些对象(比如整数)会发生什么。这是我试过的:

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

2 个答案:

答案 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

来自docs.python.org

  

删除名称会删除该名称与本地名称空间或全局名称空间的绑定,具体取决于名称是否出现在同一代码块中的全局语句中。如果名称未绑定,则将引发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