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

fo_*_*x86 2 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
Run Code Online (Sandbox Code Playgroud)

好像python不会以不同方式处理函数和变量名.如果没有重新启动python解释器,有没有办法分配len回函数?或者取消分配len = 1

Chr*_*our 18

用途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
Run Code Online (Sandbox Code Playgroud)

来自docs.python.org:

删除名称将删除该名称与本地或全局名称空间的绑定,具体取决于名称是否出现在同一代码块中的全局语句中.如果名称未绑定,则将引发NameError异常

  • 这很光滑. (2认同)

Jak*_*yer 12

从技术上讲,你可以从它回来 __builtin__

from __builtin__ import len
Run Code Online (Sandbox Code Playgroud)

但是请不要说出任何东西len,这会让明智的程序员生气.

好的,首先不要在内置函数之后命名变量,其次如果你想尊重其他函数,那么请尊重命名空间,例如

import time
time.asctime()
asctime = 4253
time.asctime() # Notice that asctime here is unaffected as its inside the time module(s) namespace
Run Code Online (Sandbox Code Playgroud)