课程
/后端开发
/Python
/python进阶
为什么f(j)里面的j默认是1啊
2018-06-03
源自:python进阶 2-9
正在回答
fs.append(f)这里加到fs[]中的f是指向f()这个函数的对象,到f1,f2,f3 = count()这个语句执行时, 即为f1,f2,f3 = f(),但是此时for循环已经执行完成,i=3,此时调用函数f(),f1,f2,f3 = 9,9,9. 可参照前面一节,返回函数,了解一下f和f()的区别 而传入r的时候,r是具体的值,且每次循环时r的值都不同,故返回1,4,9.
这个我也不太确定。我的理解是:count()返回了一个list,这个list由三个f函数构成。所以
f1, f2, f3 = count()
应该是f1= f 之类的赋值。然后在执行print f()语句时,调用并执行了f函数,返回了 i*i(此时i=3)。所以便是9 9 9了。
而1 4 9代码则是中的count()返回的是一个由f(1),f(2),f(3)返回的g函数。这样执行f1()时,g中的j应该就是f(1)传入的1。如果是这样那返回的就是1*1了。
(个人观点·····orz)
应该不是默认为1。我觉得应该是:f(j)中j的值是通过r = f(i) 传过去的。在第一次for循环中,i=1,通过r = f(i)调用f()函数,并传入参数i=1。也许这样的代码好理解一点。
def count(): fs = [] def f(j): def g(): return j*j return g for i in range(1, 4): r = f(i) fs.append(r) return fs f1, f2, f3 = count() print f1(), f2(), f3()
慕姐2004059 提问者
举报
学习函数式、模块和面向对象编程,掌握Python高级程序设计
购课补贴联系客服咨询优惠详情
慕课网APP您的移动学习伙伴
扫描二维码关注慕课网微信公众号