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 19 Python
python实现对excel进行数据剔除操作实例
Dec 07 Python
将pandas.dataframe的数据写入到文件中的方法
Dec 07 Python
PyCharm 设置SciView工具窗口的方法
Jan 15 Python
PyCharm2019安装教程及其使用(图文教程)
Sep 29 Python
python定时任务 sched模块用法实例
Nov 04 Python
Pytorch中膨胀卷积的用法详解
Jan 07 Python
Python跑循环时内存泄露的解决方法
Jan 13 Python
Selenium 滚动页面至元素可见的方法
Mar 18 Python
手把手教你如何用Pycharm2020.1.1配置远程连接的详细步骤
Aug 07 Python
python3 通过 pybind11 使用Eigen加速代码的步骤详解
Dec 07 Python
Python3使用Qt5来实现简易的五子棋小游戏
May 02 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
删除无限级目录与文件代码共享
2006/07/12 PHP
PHP实现把数字ID转字母ID
2013/08/12 PHP
php检查是否是ajax请求的方法
2015/04/16 PHP
浅谈PHP的exec()函数无返回值排查方法(必看)
2017/03/31 PHP
非常好的js代码
2006/06/27 Javascript
js实现瀑布流的一种简单方法实例分享
2013/11/04 Javascript
最短的IE判断var ie=!-[1,]分析
2014/05/28 Javascript
Jquery easyui 实现动态树
2015/11/17 Javascript
基于JavaScript操作DOM常用的API小结
2015/12/01 Javascript
JavaScript代码生成PDF文件的方法
2016/02/26 Javascript
Atitit.js的键盘按键事件捆绑and事件调度
2016/04/01 Javascript
Bootstrap中的Panel和Table全面解析
2016/06/13 Javascript
javascript基础练习之翻转字符串与回文
2017/02/20 Javascript
JS中使用 after 伪类清除浮动实例
2017/03/01 Javascript
解决webpack无法通过IP地址访问localhost的问题
2018/02/22 Javascript
jQuery 操作 HTML 元素和属性的方法
2018/11/12 jQuery
JS代码检查工具ESLint介绍与使用方法
2020/02/04 Javascript
使用konva和vue-konva库实现拖拽滑块验证功能
2020/04/27 Javascript
python3使用tkinter实现ui界面简单实例
2014/01/10 Python
python判断windows系统是32位还是64位的方法
2015/05/11 Python
Python爬虫框架Scrapy实战之批量抓取招聘信息
2015/08/07 Python
Python读取stdin方法实例
2019/05/24 Python
python使用matplotlib绘制雷达图
2019/10/18 Python
python处理RSTP视频流过程解析
2020/01/11 Python
Python实现序列化及csv文件读取
2020/01/19 Python
tensorflow之并行读入数据详解
2020/02/05 Python
带你学习Python如何实现回归树模型
2020/07/16 Python
史上最详细的Python打包成exe文件教程
2021/01/17 Python
英国最大的在线奢侈手表零售商:Jura Watches
2018/01/29 全球购物
行政助理求职自荐信
2013/10/26 职场文书
学生会竞聘书范文
2014/03/31 职场文书
打架赔偿协议书范本
2014/10/26 职场文书
开平碉楼导游词
2015/02/06 职场文书
证券区域经理岗位职责
2015/04/10 职场文书
MySQL中rank() over、dense_rank() over、row_number() over用法介绍
2022/03/23 MySQL
详解使用内网穿透工具Ngrok代理本地服务
2022/03/31 Servers