#! /usr/bin/env python # -*- coding:utf-8 -*- def fun_150(val): passline = 90 if val >= passline: print("pass") else: print("fail") def fun_100(val): passline = 60 if val >= passline: print("pass") else: print("fail") #fun_150(89) #fun_100(89) #上述代码使用闭包来实现 def set_passline(passline):
print('%x'%id(passline)) # %x以16进制显示 def cmp(val): if val >= passline: print('pass') else: print('fail') return cmp f = set_passline(60) f(89) f2 = set_passline(90) f2(89)
print(f2.__closure__) #函数属性打印的地址值和上面变量地址值一样证明将变量放到了函数属性中__closure__中
闭包就是内置函数对enclosing 作用域变量的一个使用将这个变量放到__closure__这个属性中,当内置函数需要处理时可以直接拿过来使用
闭包作用
1.封装
2.代码复用