我做了一個非常簡單的函數,它接受號的列表,並返回一些數字四捨五入號碼清單:Python中的遞歸函數悖論..它如何解釋?
def rounded(lista, digits = 3):
neulist = []
for i in lista:
neulist.append(round(i, digits))
return neulist
然而,我錯把函數本身的代碼,而不是內置round()
的(如在下面的示例):
def rounded(lista, digits = 3):
neulist = []
for i in lista:
neulist.append(rounded(i, digits))
return neulist
和得到這個輸出:
Traceback (most recent call last):
File "<pyshell#286>", line 1, in <module>
rounded(a)
File "<pyshell#284>", line 4, in rounded
neulist.append(rounded(i, digits))
File "<pyshell#284>", line 3, in rounded
for i in lista:
TypeError: 'float' object is not iterable
的問題是:如何做解釋者知道在評估函數rounded()
本身時必須應用函數rounded()
?無論如何,rounded()
是一個函數,如果它正試圖解釋這個函數,那麼它是一個函數嗎?是否有兩種循環程序來評估&解釋函數?或者我在這裏得到錯誤?
題外話,就像旁註:'round = lambda l:map(lambda x:round(x,1),l)' – Pavel