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实现simhash算法实例
Apr 25 Python
用Python编写一个简单的FUSE文件系统的教程
Apr 02 Python
python 表达式和语句及for、while循环练习实例
Jul 07 Python
Python求出0~100以内的所有素数
Jan 23 Python
Python切片工具pillow用法示例
Mar 30 Python
PyQt5每天必学之滑块控件QSlider
Apr 20 Python
详谈Pandas中iloc和loc以及ix的区别
Jun 08 Python
python儿童学游戏编程知识点总结
Jun 03 Python
PyTorch中的padding(边缘填充)操作方式
Jan 03 Python
Python openpyxl模块原理及用法解析
Jan 19 Python
Python range与enumerate函数区别解析
Feb 28 Python
python操作xlsx格式文件并读取
Jun 02 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
30个php操作redis常用方法代码例子
2014/07/05 PHP
深入了解PHP中的Array数组和foreach
2016/11/06 PHP
php实现微信企业转账功能
2018/10/02 PHP
javascript下高性能字符串连接StringBuffer类
2010/08/16 Javascript
从阶乘函数对比Javascript和C#的异同
2012/05/31 Javascript
nodejs爬虫抓取数据之编码问题
2015/07/03 NodeJs
js实现文件上传表单域美化特效
2015/11/02 Javascript
JavaScript识别网页关键字并进行描红的方法
2015/11/09 Javascript
AngularJS实现元素显示和隐藏的几个案例
2015/12/09 Javascript
Laravel中常见的错误与解决方法小结
2016/08/30 Javascript
javascript正则表达式模糊匹配IP地址功能示例
2017/01/06 Javascript
微信小程序上传图片到服务器实例代码
2017/11/07 Javascript
jQuery实现checkbox即点即改批量删除及中间遇到的坑
2017/11/11 jQuery
vue.js绑定事件监听器示例【基于v-on事件绑定】
2018/07/07 Javascript
Vue的生命周期操作示例
2019/09/17 Javascript
Python的time模块中的常用方法整理
2015/06/18 Python
Python tornado队列示例-一个并发web爬虫代码分享
2018/01/09 Python
python批量爬取下载抖音视频
2019/06/17 Python
Pytorch实现基于CharRNN的文本分类与生成示例
2020/01/08 Python
python输出数学符号实例
2020/05/11 Python
Python生成pdf目录书签的实例方法
2020/10/29 Python
使用Python解析Chrome浏览器书签的示例
2020/11/13 Python
jupyter使用自动补全和切换默认浏览器的方法
2020/11/18 Python
python SOCKET编程基础入门
2021/02/27 Python
CSS3 实现时间轴动画
2020/11/25 HTML / CSS
英国骑行、跑步、游泳、铁人三项运动装备专卖店:Wiggle
2016/08/23 全球购物
英国排名第一的餐具品牌:Denby Pottery
2019/11/01 全球购物
广告设计专业自荐信范文
2013/11/14 职场文书
《自选商场》教学反思
2014/02/14 职场文书
煤矿安全协议书
2014/08/20 职场文书
公司保洁员岗位职责
2015/02/13 职场文书
银行资信证明
2015/06/17 职场文书
2016护理专业求职自荐书
2016/01/28 职场文书
致创业的您:这类人不适合餐饮创业
2019/08/19 职场文书
Python中的np.argmin()和np.argmax()函数用法
2021/06/02 Python
修改并编译golang源码的操作步骤
2021/07/25 Golang