Heim > Fragen und Antworten > Hauptteil
伊谢尔伦2017-04-17 15:39:11
这个是python的多指返回,count()函数返回的是一个函数的列表,列表的值有三个,分别是f(1), f(2), f(3),赋值给了对应的f1,f2,f3,然后print的时候执行了函数,得到的是1,4,9
阿神2017-04-17 15:39:11
count()函数返回fs这个列表,这个列表本身包含三个item。
f1, f2, f3 = count()
表示对列表解包。等价于
f1, f2, f3 = [1, 2, 3]
即 ,f1 = 1
, f2 = 2
, f3 = 3
原文的items是一些闭包函数。
ringa_lee2017-04-17 15:39:11
@sorashiro
额,我也是新手一枚,看到这段代码,我也有一句看不懂的地方,求问:
r = f(i) 这句代码,为什么没有执行f(j)函数呢?
我跟着代码脑子里走了一遍得到的答案是print:1,16,81
原因是我认为r = f(i)这句代码执行了f(j)函数,我在电脑里运行了一遍发现自己是错的,就不明白这里这句了:为什么r = f(i)没有执行f(j)函数呢?
大家讲道理2017-04-17 15:39:11
首先回答f1,f2,f3=count()是什么意思。因为count()函数返回的是一个列表,python允许你将列表赋给多个变量,只要列表长度跟变量数相等。
其次,来讲为什么是1,4,9。这与函数的闭包有关,简单的讲是内部函数有记忆功能,它记住外部函数给它的参数。
所以f1,f2,f3接收列表后并没有马上执行,等到f1(),f2(),f3()被调用后,它们都同时会去执行j*j。