无法接收python代码的输出。我尝试通过打印每一行来调试代码
def get_sum_metrics(predictions, metrics=[]):
for i in range(0,3):
metrics.append(lambda x:x+i)
sum_metrics = 0
for metric in metrics:
sum_metrics += metric(predictions)
return sum_metrics
def main():
print(get_sum_metrics(0))
print(get_sum_metrics(1))
print(get_sum_metrics(2))
print(get_sum_metrics(3,[lambda x:x]))
print(get_sum_metrics(0))
print(get_sum_metrics(1))
print(get_sum_metrics(2))
if __name__=='__main__':
main()
预期的输出应该是 3 6 9 15 3 6 9
but getting..
6
18
36
18
24
45
72
答案 0 :(得分:0)
您的问题与mutable default arguments和this question所示的循环创建lambda
的问题有关。
这两个固定的问题为您提供了
def get_sum_metrics(predictions, metrics=None):
if metrics is None:
metrics = []
for i in range(0,3):
f = lambda x, i=i: x+i
metrics.append(f)
sum_metrics = 0
for metric in metrics:
sum_metrics += metric(predictions)
return sum_metrics