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 pdb调试方法分享
Jan 21 Python
使用paramiko远程执行命令、下发文件的实例
Oct 01 Python
django的登录注册系统的示例代码
May 14 Python
python版opencv摄像头人脸实时检测方法
Aug 03 Python
在Python中输入一个以空格为间隔的数组方法
Nov 13 Python
Python版名片管理系统
Nov 30 Python
Python pycharm 同时加载多个项目的方法
Jan 17 Python
详解Python3 基本数据类型
Apr 19 Python
Django分页功能的实现代码详解
Jul 29 Python
python elasticsearch环境搭建详解
Sep 02 Python
基于Pycharm加载多个项目过程图解
Jan 19 Python
Python requests库参数提交的注意事项总结
Mar 29 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使用PHPMailer发送邮件的简单使用方法
2013/11/12 PHP
PHP入门经历和学习过程分享
2014/04/11 PHP
php中cookie实现二级域名可访问操作的方法
2014/11/11 PHP
使用php从身份证号中获取一系列线索(星座、生肖、生日等)
2016/05/11 PHP
php图片上传类 附调用方法
2016/05/15 PHP
PHP实现cookie跨域session共享的方法分析
2019/08/23 PHP
JavaScript脚本语言在网页中的简单应用
2007/05/13 Javascript
JQuery 应用 JQuery.groupTable.js
2010/12/15 Javascript
js实现收缩菜单效果实例代码
2013/10/30 Javascript
弹出最简单的模式化遮罩层的js代码
2013/12/04 Javascript
js/jquery判断浏览器的方法小结
2014/09/02 Javascript
易被忽视的js事件问题总结
2016/05/14 Javascript
bootstrap警告框使用方法解析
2017/01/13 Javascript
详解Nodejs之npm&package.json
2017/06/15 NodeJs
vue按需引入element Transfer 穿梭框
2017/09/30 Javascript
AngularJS遍历获取数组元素的方法示例
2017/11/11 Javascript
详解自定义ajax支持跨域组件封装
2018/02/08 Javascript
小程序实现列表删除功能
2018/10/30 Javascript
[03:42]2018完美盛典-《加冕》
2018/12/16 DOTA
如何解决django配置settings时遇到Could not import settings 'conf.local'
2014/11/18 Python
python 自动重连wifi windows的方法
2018/12/18 Python
python elasticsearch从创建索引到写入数据的全过程
2019/08/04 Python
使用Python操作MySQL的小技巧
2020/09/10 Python
Python环境配置实现pip加速过程解析
2020/11/27 Python
施华洛世奇天猫官方旗舰店:SWAROVSKI
2017/04/17 全球购物
Yahoo-PHP面试题1
2016/07/20 面试题
婚假请假条格式及范文
2014/04/10 职场文书
诉讼代理人授权委托书
2014/10/11 职场文书
vue如何批量引入组件、注册和使用详解
2021/05/12 Vue.js
AJAX学习笔记
2021/05/18 Javascript
十大最强水系宝可梦,最美宝可梦排第三,榜首大家最熟悉
2022/03/18 日漫
详细聊一聊mysql的树形结构存储以及查询
2022/04/05 MySQL
MySql重置root密码 --skip-grant-tables
2022/04/11 MySQL
详解Vue3使用axios的配置教程
2022/04/29 Vue.js
python实现双向链表原理
2022/05/25 Python
Python数组变形的几种实现方法
2022/05/30 Python