我有一個有趣的(可能是愚蠢的)想法:如果我使用內置函數名稱作爲變量來分配某個對象(比如說整數)會發生什麼。這是我的嘗試:在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
?
Python將函數和methosd作爲第一類對象進行處理,這就是爲什麼您可以將它們分配給它們並將它們傳遞給其他函數的原因。 – 2013-01-03 23:05:50
的確,Python不會以不同的方式處理函數和變量名稱。這是將函數作爲第一類對象使用的關鍵,而不必像Ruby的':func',Lisp的''func'等一樣做任何事情。 – abarnert
你沒有實際覆蓋它,你掩蓋了它。只要刪除新的'len'變量就會揭示內置的名字。不需要從'__builtin__'導入。 – Keith