python如何通过闭包实现计算器的功能


Posted in Python onFebruary 22, 2020

这篇文章主要介绍了python如何通过闭包实现计算器的功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

满足闭包的条件:

1、函数中嵌套一个函数

2、外层函数的返回值是内层函数的函数名

3、内层嵌套函数对外部作用域有一个非全局变量的引用

闭包的作用:

实现数据锁定

装饰器的作用:

就是为已经存在的对象添加额外的功能。
常用场景:

插入日志、性能测试、事务处理、缓存、权限校验等

代码示例:

def scope(func):
  def calc(a, b):
    try:
      _a = float(a)
      _b = float(b)
    except:
      _a = 0
      _b = 0
    return func(_a, _b)
  return calc


@scope
def add(a, b):
  return a + b


@scope
def sub(a, b):
  return a - b


@scope
def mul(a, b):
  return a * b


@scope
def div(a, b):
  try:
    return a / b
  except ZeroDivisionError as error:
    print(error)
    return 0


# 调用闭包函数
res = scope(add)("1", 3)
print(res)

res = add("1", "2")
print(res)

res = sub("1", "2")
print(res)

res = mul("1", "2")
print(res)

res = div("1", "2")
print(res)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中下划线的使用方法
Mar 27 Python
python与C互相调用的方法详解
Jul 14 Python
python读取和保存视频文件
Apr 16 Python
解决python3 json数据包含中文的读写问题
May 10 Python
使用python爬取B站千万级数据
Jun 08 Python
Django 路由控制的实现代码
Nov 08 Python
python-sys.stdout作为默认函数参数的实现
Feb 21 Python
Opencv图像处理:如何判断图片里某个颜色值占的比例
Jun 03 Python
Pandas的Apply函数具体使用
Jul 21 Python
Python利用pip安装tar.gz格式的离线资源包
Sep 14 Python
Python中random模块常用方法的使用教程
Oct 04 Python
Python 2.6.6升级到Python2.7.15的详细步骤
Dec 14 Python
postman和python mock测试过程图解
Feb 22 #Python
Python实现链表反转的方法分析【迭代法与递归法】
Feb 22 #Python
Python实现队列的方法示例小结【数组,链表】
Feb 22 #Python
python实现从尾到头打印单链表操作示例
Feb 22 #Python
python实现滑雪游戏
Feb 22 #Python
Python实现栈的方法详解【基于数组和单链表两种方法】
Feb 22 #Python
Python栈的实现方法示例【列表、单链表】
Feb 22 #Python
You might like
深入php var_dump()函数的详解
2013/06/05 PHP
通过PHP的Wrapper无缝迁移原有项目到新服务的实现方法
2020/04/02 PHP
有关PHP 中 config.m4 的探索
2020/08/26 PHP
HTML中Select不用Disabled实现ReadOnly的效果
2008/04/07 Javascript
javascript 数据类型转换(parseInt,parseFloat)
2010/07/20 Javascript
js冒泡法和数组转换成字符串示例代码
2013/08/14 Javascript
Egret引擎开发指南之运行项目
2014/09/03 Javascript
jQuery 3.0 的变化及使用方法
2016/02/01 Javascript
vue2.0实现倒计时的插件(时间戳 刷新 跳转 都不影响)
2017/03/30 Javascript
javascript闭包功能与用法实例分析
2017/04/06 Javascript
EasyUI的TreeGrid的过滤功能的解决思路
2017/08/08 Javascript
jQuery ajax调用webservice注意事项
2017/10/08 jQuery
详解用webpack的CommonsChunkPlugin提取公共代码的3种方式
2017/11/09 Javascript
JavaScript使用类似break机制中断forEach循环的方法
2018/11/13 Javascript
node静态服务器实现静态读取文件或文件夹
2019/12/03 Javascript
环形加载进度条封装(Vue插件版和原生js版)
2019/12/04 Javascript
利用Vue实现简易播放器的完整代码
2020/12/30 Vue.js
[47:10]完美世界DOTA2联赛PWL S3 LBZS vs Rebirth 第二场 12.16
2020/12/18 DOTA
python中使用mysql数据库详细介绍
2015/03/27 Python
Python中的条件判断语句基础学习教程
2016/02/07 Python
tensorflow学习教程之文本分类详析
2018/08/07 Python
pycharm创建一个python包方法图解
2019/04/10 Python
Python检查 云备份进程是否正常运行代码实例
2019/08/22 Python
Python数据可视化:泊松分布详解
2019/12/07 Python
matplotlib 生成的图像中无法显示中文字符的解决方法
2020/06/10 Python
解决Ubuntu18中的pycharm不能调用tensorflow-gpu的问题
2020/09/17 Python
pymysql模块使用简介与示例
2020/11/17 Python
详解使用python爬取抖音app视频(appium可以操控手机)
2021/01/26 Python
css3的transform中scale缩放详解
2014/12/08 HTML / CSS
CSS实现半透明边框与多重边框的场景分析
2019/11/13 HTML / CSS
HTML5新表单元素_动力节点Java学院整理
2017/07/12 HTML / CSS
Ajxa常见问题都有哪些
2014/03/26 面试题
公司部门司机岗位职责
2014/01/03 职场文书
处级干部反四风个人对照检查材料思想汇报
2014/09/27 职场文书
2016年学生会感恩节活动总结
2016/04/01 职场文书
python文本处理的方案(结巴分词并去除符号)
2021/05/26 Python