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)
posted @ 2019-12-26 21:14  奔奔-武  阅读(420)  评论(0编辑  收藏  举报