首先,吐槽一下Python核心编程(第二版)这本书,前半部分大错误没有小错误不断,到后半部错误真是连篇了。
对于第十一章中的追踪闭包词法的变量例子,根据书上的根本就没有办法理解,代码的缩进就是一团糟,下面给出正确的缩进格式,希望后来人不要受误导浪费时间。
#!/usr/bin/env python
output = '<int %r id=%#0x val=%d>'
w = x = y = z =1
def f1():
x = y = z =2
def f2():
y = z = 3
def f3():
z = 4
print output %('w',id(w),w)
print output %('x',id(x),x)
print output %('y',id(y),y)
print output %('z',id(z),z)
col = f3.func_closure
if clo:
print "f3 closure vars:",[str(c) for c in clo]
else:
print "no f3 closure vars"
f3()
clo = f2.func_closure
if clo:
print "f2 closure vars:",[str(c) for c in clo]
else:
print "no f2 closure vars"
f2()
clo = f1.func_closure
if clo:
print "f1 closure var:",[str(c) for c in clo]
else:
print "no f1 closure var"
f1()