为了账号安全,请及时绑定邮箱和手机立即绑定

请问一下python代码中,fs明明是列表,为什么append(f)之后就变成函数了?

请问一下python代码中,fs明明是列表,为什么append(f)之后就变成函数了?

慕粉18373240591 2017-02-09 17:19:08
def count():     fs = []     for i in range(1, 4):         def f():              return i*i         fs.append(f)     return fs f1, f2, f3 = count()
查看完整描述

3 回答

已采纳
?
朕日理万机

TA贡献27条经验 获得超28个赞

因为f是函数,你在fs里append(f),就是把函数加到fs里了,最后f1 f2 f3就都是函数。fs仍然是个列表,里面装了3个函数而已。

如果你想把f返回的值加进去,应该写成fs.append( f() )

查看完整回答
7 反对 回复 2017-02-09
?
tuitang

TA贡献5条经验 获得超1个赞

并不能理解你问的问题。。。fs一直是列表啊。这个函数就是一个for循环 然后塞进fs这个列表里,最后把这个列表返回。但是你这边 f1,f2,f3  = count() 这种写法是有问题的。因为在正好这个列表里有三个元素,所以没有问题,但是如果列表长度不是3个,那你的代码会直接报错的,不建议这样写

查看完整回答
1 反对 回复 2017-02-09
?
Iamxiaoq

TA贡献33条经验 获得超6个赞

已经是第N次看到这代码了 

查看完整回答
反对 回复 2017-02-10
  • 3 回答
  • 0 关注
  • 4712 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信