python-用闭包(装饰器)实现计算器的功能
满足闭包的条件:
1、函数中嵌套一个函数
2、外层函数的返回值是内层函数的函数名
3、内层嵌套函数对外部作用域有一个非全局变量的引用
闭包的作用:
实现数据锁定
装饰器的作用:
就是为已经存在的对象添加额外的功能。
常用场景:
插入日志、性能测试、事务处理、缓存、权限校验等
代码示例:
1 def scope(func): 2 def calc(a, b): 3 try: 4 _a = float(a) 5 _b = float(b) 6 except: 7 _a = 0 8 _b = 0 9 return func(_a, _b) 10 return calc 11 12 13 @scope 14 def add(a, b): 15 return a + b 16 17 18 @scope 19 def sub(a, b): 20 return a - b 21 22 23 @scope 24 def mul(a, b): 25 return a * b 26 27 28 @scope 29 def div(a, b): 30 try: 31 return a / b 32 except ZeroDivisionError as error: 33 print(error) 34 return 0 35 36 37 # 调用闭包函数 38 res = scope(add)("1", 3) 39 print(res) 40 41 res = add("1", "2") 42 print(res) 43 44 res = sub("1", "2") 45 print(res) 46 47 res = mul("1", "2") 48 print(res) 49 50 res = div("1", "2") 51 print(res)