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如何判断数独是否合法
Sep 08 Python
django admin 后台实现三级联动的示例代码
Jun 22 Python
对Tensorflow中的矩阵运算函数详解
Jul 27 Python
六行python代码的爱心曲线详解
May 17 Python
python3在同一行内输入n个数并用列表保存的例子
Jul 20 Python
python实现的多任务版udp聊天器功能案例
Nov 13 Python
Mac 使用python3的matplot画图不显示的解决
Nov 23 Python
python文件操作seek()偏移量,读取指正到指定位置操作
Jul 05 Python
Python常用库Numpy进行矩阵运算详解
Jul 21 Python
python 如何做一个识别率百分百的OCR
May 29 Python
OpenCV-Python实现人脸美白算法的实例
Jun 11 Python
Pytorch中expand()的使用(扩展某个维度)
Jul 15 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
php 接口类与抽象类的实际作用
2009/11/26 PHP
thinkphp连贯操作实例分析
2014/11/22 PHP
Yii2主题(Theme)用法详解
2016/07/23 PHP
php使用curl详细解析及问题汇总
2016/08/11 PHP
laravel配置Redis多个库的实现方法
2019/04/10 PHP
php与阿里云短信接口接入操作案例分析
2020/05/27 PHP
jQuery中调用WebService方法小结
2011/03/28 Javascript
基于jquery的代码显示区域自动拉长效果
2011/12/07 Javascript
javaScript 页面自动加载事件详解
2014/02/10 Javascript
jQuery实现简单的DIV拖动效果
2016/02/19 Javascript
JS创建对象几种不同方法详解
2016/03/01 Javascript
再谈Javascript中的基本类型和引用类型(推荐)
2016/07/01 Javascript
Angular.js中$apply()和$digest()的深入理解
2016/10/13 Javascript
微信开发之调起摄像头、本地展示图片、上传下载图片实例
2016/12/08 Javascript
微信小程序-小说阅读小程序实例(demo)
2017/01/12 Javascript
SVG动画vivus.js库使用小结(实例代码)
2017/09/14 Javascript
详解vue-cli 3.0 build包太大导致首屏过长的解决方案
2018/11/10 Javascript
通过Nodejs搭建网站简单实现注册登录流程
2019/06/14 NodeJs
javascript 设计模式之组合模式原理与应用详解
2020/04/08 Javascript
JavaScript实现原型封装轮播图
2020/12/27 Javascript
[06:11]2014DOTA2国际邀请赛 专访团结一心的VG战队
2014/07/21 DOTA
python获得图片base64编码示例
2014/01/16 Python
python中将字典转换成其json字符串
2014/07/16 Python
Python中使用scapy模拟数据包实现arp攻击、dns放大攻击例子
2014/10/23 Python
Python3使用requests发闪存的方法
2016/05/11 Python
Python使用Matplotlib模块时坐标轴标题中文及各种特殊符号显示方法
2018/05/04 Python
python把数组中的数字每行打印3个并保存在文档中的方法
2018/07/17 Python
浅析python中numpy包中的argsort函数的使用
2018/08/30 Python
Python实现的栈、队列、文件目录遍历操作示例
2019/05/06 Python
Python3使用TCP编写一个简易的文件下载器功能
2019/05/08 Python
CSS3 Media Queries(响应式布局可以让你定制不同的分辨率和设备)
2013/06/06 HTML / CSS
经销商培训邀请函
2014/01/21 职场文书
《草原的早晨》教学反思
2014/04/08 职场文书
村级环境卫生整治方案
2014/05/04 职场文书
群众路线教育实践活动自我剖析思想汇报
2014/10/04 职场文书
iPhone13 Pro外观确定,升级4800万镜头,4月20日发新品
2021/04/15 数码科技