Discuss / Python / 有个发现,大家可以敲敲这段代码试试,就是有个地方的f 换成了f()

有个发现,大家可以敲敲这段代码试试,就是有个地方的f 换成了f()

Topic source
在此插入代码

def count(): fs = [] for i in range(1, 4): def f(): return i*i fs.append(f()) return fs

f1, f2, f3 = count()

print(f1) print(f2) print(f3)

HowyoungZhou

#2 Created at ... [Delete] [Delete and Lock User]
 fs.append(f())

这一行加了括号后就将f函数的返回值加到了fs中,而最后返回的fs就变成了一个确定的list[1, 4, 9],自然就能打印出这三个数了。

fs.append(f()) 你有了这一局,就直接完成了全部函数运算,直接的得到值,已经跳出了闭包

这个是说f()是调用函数f得到的函数值吧,类似于C中的嵌套函数?


  • 1

Reply