闭包
一、c1,c2,c3=c赋值用法
c=[1,2,3,8] c1,c2,c3=c print(c1,c2,c3)
出错:
File "C:/Users/Administrator/Desktop/jiang/python/demo/MQ/test.py", line 2, in <module>
c1,c2,c3=c
ValueError: too many values to unpack (expected 3)
2、
去掉列表中的一个元素
c=[1,2,3] c1,c2,c3=c print(c1,c2,c3)
执行成功
1 2 3
总结用法:
c必须是可迭代对象,例如列表,把它的元素一一对应赋值给对应的左边变量
二、
我们来看一个例子:
def count(): fs = [] for i in range(1, 4): def f(): return i*i fs.append(f) return fs f1, f2, f3 = count()
在上面的例子中,每次循环,都创建了一个新的函数,然后,把创建的3个函数都返回了。
你可能认为调用f1(),f2()和f3()结果应该是1,4,9,但实际结果是:
>>> f1() 9 >>> f2() 9 >>> f3() 9
全部都是9!原因就在于返回的函数引用了变量i,但它并非立刻执行。等到3个函数都返回时,它们所引用的变量i已经变成了3,因此最终结果为9。