【发布时间】:2014-07-01 13:04:41
【问题描述】:
我做了一个非常简单的函数,它接受一个数字列表并返回一个由一些数字四舍五入的数字列表:
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() 是一个浮点函数,如果它试图解释那个函数,它怎么可能呢?是否有一种两循环程序来评估和解释函数?还是我这里有什么问题?
【问题讨论】:
-
跑题了,顺便说一句:
rounded = lambda l: map(lambda x: round(x, 1), l)
标签: python function interpreter evaluation-function