zoukankan      html  css  js  c++  java
  • 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)
  • 相关阅读:
    无题..
    让Windows 2003 Server支持ASP程序
    下雪
    比较经典的.NET基础
    XML几种操作
    某年某月有几天
    .NET操作Word(傻瓜型)
    XML 简单操作
    一首歌
    ASP.NET:掌握Web窗体的生命周期与状态管理(摘自网络)
  • 原文地址:https://www.cnblogs.com/benben-wu/p/12104448.html
Copyright © 2011-2022 走看看