Python函数中的函数(闭包)用法实例


Posted in Python onMarch 15, 2016

本文实例讲述了Python闭包的用法。分享给大家供大家参考,具体如下:

Python函数中也可以定义函数,也就是闭包。跟js中的闭包概念其实差不多,举个Python中闭包的例子。

def make_adder(addend):
 def adder(augend):
  return augend + addend
 return adder
p = make_adder(23)
q = make_adder(44)
print(p(100))
print(q(100))

运行结果是:123和144.

为什么?Python中一切皆对象,执行p(100),其中p是make_adder(23)这个对象,也就是addend这个参数是23,你又传入了一个100,也就是augend参数是100,两者相加123并返回。

有没有发现make_adder这个函数,里面定义了一个闭包函数,但是make_adder返回的return却是里面的这个闭包函数名,这就是闭包函数的特征。

再看一个Python闭包的例子:

def hellocounter (name):
 count=[0]
 def counter():
  count[0]+=1
  print('Hello,',name,',',count[0],' access!')
 return counter
hello = hellocounter('ma6174')
hello()
hello()
hello()

运行结果:

tantengdeMacBook-Pro:learn-python tanteng$ python3 closure.py 
Hello, ma6174 , 1 access!
Hello, ma6174 , 2 access!
Hello, ma6174 , 3 access!

使用闭包实现了计数器的功能,这也是闭包的一个特点,返回的值保存在了内存中,所以可以实现计数功能。

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python基础教程之常用运算符
Aug 29 Python
跟老齐学Python之用while来循环
Oct 02 Python
Python中json格式数据的编码与解码方法详解
Jul 01 Python
Python多进程库multiprocessing中进程池Pool类的使用详解
Nov 24 Python
Python编程pygame模块实现移动的小车示例代码
Jan 03 Python
Windows下的Jupyter Notebook 安装与自定义启动(图文详解)
Feb 21 Python
Flask之flask-script模块使用
Jul 26 Python
python框架中flask知识点总结
Aug 17 Python
对Matlab中共轭、转置和共轭装置的区别说明
May 11 Python
python中类与对象之间的关系详解
Dec 16 Python
基于Python实现的购物商城管理系统
Apr 27 Python
Python进程池与进程锁之语法学习
Apr 11 Python
实例讲解Python中函数的调用与定义
Mar 14 #Python
Python使用multiprocessing实现一个最简单的分布式作业调度系统
Mar 14 #Python
简单讲解Python中的字符串与字符串的输入输出
Mar 13 #Python
深入解析Python中的list列表及其切片和迭代操作
Mar 13 #Python
Python中的列表生成式与生成器学习教程
Mar 13 #Python
jupyter安装小结
Mar 13 #Python
Ubuntu下安装PyV8
Mar 13 #Python
You might like
基于mysql的bbs设计(二)
2006/10/09 PHP
PHP教程 基本语法
2009/10/23 PHP
解析php中const与define的应用区别
2013/06/18 PHP
PHP实现发送邮件的方法(基于简单邮件发送类)
2015/12/17 PHP
去除链接虚线全面分析总结
2006/08/15 Javascript
NodeJS 模块开发及发布详解分享
2012/03/07 NodeJs
Jquery 模板数据绑定插件的使用方法详解
2013/07/08 Javascript
js获取滚动距离的方法
2015/05/30 Javascript
详解Bootstrap的aria-label和aria-labelledby应用
2016/01/04 Javascript
JavaScript学习总结之JS、AJAX应用
2016/01/29 Javascript
js原型链与继承解析(初体验)
2016/05/09 Javascript
原生js实现可爱糖果数字时间特效
2016/12/30 Javascript
react 创建单例组件的方法
2018/04/26 Javascript
node跨域转发 express+http-proxy-middleware的使用
2018/05/31 Javascript
微信小程序实现左右列表联动
2020/05/19 Javascript
一些你可能不熟悉的JS知识点总结
2019/03/15 Javascript
Vue2.0 实现页面缓存和不缓存的方式
2019/11/12 Javascript
Vue 微信端扫描二维码苹果端却只能保存图片问题(解决方法)
2020/01/19 Javascript
[43:41]OG vs Newbee 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.21.mp4
2020/07/19 DOTA
在Linux下使用Python的matplotlib绘制数据图的教程
2015/06/11 Python
关于Python正则表达式 findall函数问题详解
2018/03/22 Python
详解python异步编程之asyncio(百万并发)
2018/07/07 Python
python 处理string到hex脚本的方法
2018/10/26 Python
通过实例了解python__slots__使用方法
2020/09/14 Python
德国珠宝和手表在线商店:VALMANO
2019/03/24 全球购物
个人简历中的自我评价范例
2013/10/29 职场文书
创业计划书六个要素
2013/12/26 职场文书
职工运动会邀请函
2014/02/02 职场文书
文字自荐书范文
2014/02/10 职场文书
经理管理专业毕业自荐书范文
2014/02/12 职场文书
医师定期考核实施方案
2014/05/07 职场文书
教师批评与自我批评心得体会
2014/10/16 职场文书
领导干部群众路线对照检查材料
2014/11/05 职场文书
试用期工作表现自我评价
2015/03/06 职场文书
68句权威创业名言
2019/08/26 职场文书
MySQL创建索引需要了解的
2021/04/08 MySQL