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 相关文章推荐
Tensorflow中的placeholder和feed_dict的使用
Jul 09 Python
python使用magic模块进行文件类型识别方法
Dec 08 Python
Python Unittest根据不同测试环境跳过用例的方法
Dec 16 Python
Django 中间键和上下文处理器的使用
Mar 17 Python
利用python实现周期财务统计可视化
Aug 25 Python
Python SSL证书验证问题解决方案
Jan 13 Python
Tensorflow 实现释放内存
Feb 03 Python
python实现将两个文件夹合并至另一个文件夹(制作数据集)
Apr 03 Python
使用Keras实现Tensor的相乘和相加代码
Jun 18 Python
Python实现给PDF添加水印的方法
Jan 25 Python
pytorch下的unsqueeze和squeeze的用法说明
Feb 06 Python
Pyhton模块和包相关知识总结
May 12 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检测用户是否关闭浏览器的方法
2016/02/14 PHP
thinkphp3.2实现上传图片的控制器方法
2016/04/28 PHP
PHP使用PDO创建MySQL数据库、表及插入多条数据操作示例
2019/05/30 PHP
php7下的filesize函数
2019/09/30 PHP
javascript 另一种图片滚动切换效果思路
2012/04/20 Javascript
通过JavaScript使Div居中并随网页大小改变而改变
2013/06/24 Javascript
离开当前页面前使用js判断条件提示是否要离开页面
2014/05/02 Javascript
JavaScript实现点击自动选择TextArea文本的方法
2015/07/02 Javascript
实例详解JavaScript获取链接参数的方法
2016/01/01 Javascript
浅析js绑定事件的常用方法
2016/05/15 Javascript
JavaScript中点击事件的写法
2016/06/28 Javascript
jquery checkbox无法用attr()二次勾选问题的解决方法
2016/07/22 Javascript
js 单引号替换成双引号,双引号替换成单引号的实现方法
2017/02/16 Javascript
分分钟玩转Vue.js组件(二)
2017/03/01 Javascript
Bootstrap常用组件学习(整理)
2017/03/24 Javascript
JavaScript之promise_动力节点Java学院整理
2017/07/03 Javascript
阿里大于短信验证码node koa2的实现代码(最新)
2017/09/07 Javascript
详解处理bootstrap4不支持远程静态框问题
2018/07/20 Javascript
jquery获取select选中值的文本,并赋值给另一个输入框的方法
2018/08/21 jQuery
nodejs文件夹深层复制功能
2019/09/03 NodeJs
vue实现桌面向网页拖动文件的示例代码(可显示图片/音频/视频)
2021/03/01 Vue.js
python中print的不换行即时输出的快速解决方法
2016/07/20 Python
详解python tkinter教程-事件绑定
2019/03/28 Python
pandas数据筛选和csv操作的实现方法
2019/07/02 Python
python 使用matplotlib 实现从文件中读取x,y坐标的可视化方法
2019/07/04 Python
Python利用FFT进行简单滤波的实现
2020/02/26 Python
Mysql数据库反向生成Django里面的models指令方式
2020/05/18 Python
Python环境搭建过程从安装到Hello World
2021/02/05 Python
国际知名军事风格休闲装品牌:Alpha Industries(阿尔法工业)
2017/05/24 全球购物
物理教师自荐信范文
2013/12/28 职场文书
爱国口号
2014/06/19 职场文书
我的梦想演讲稿500字
2014/08/21 职场文书
2014年最新个人对照检查材料范文
2014/09/25 职场文书
合法的离婚协议书范本
2014/10/23 职场文书
查摆问题整改措施
2014/10/24 职场文书
SQL 窗口函数实现高效分页查询的案例分析
2021/05/21 SQL Server