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文本生成二维码实例
Jan 06 Python
python实现应用程序在右键菜单中添加打开方式功能
Jan 09 Python
python中numpy包使用教程之数组和相关操作详解
Jul 30 Python
python 3.6 +pyMysql 操作mysql数据库(实例讲解)
Dec 20 Python
python 限制函数执行时间,自己实现timeout的实例
Jan 12 Python
如何使用python把ppt转换成pdf
Jun 29 Python
详解Django-channels 实现WebSocket实例
Aug 22 Python
Python3.7 读取 mp3 音频文件生成波形图效果
Nov 05 Python
Python抓包程序mitmproxy安装和使用过程图解
Mar 02 Python
借助Paramiko通过Python实现linux远程登陆及sftp的操作
Mar 16 Python
Python类class参数self原理解析
Nov 19 Python
Python 第三方库 openpyxl 的安装过程
Dec 24 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
一个ubbcode的函数,速度很快.
2006/10/09 PHP
解决ThinkPHP关闭调试模式时报错的问题汇总
2015/04/22 PHP
php生成4位数字验证码的实现代码
2015/11/23 PHP
PHP中的session安全吗?
2016/01/22 PHP
PHP表单数据写入MySQL数据库的代码
2016/05/31 PHP
php制作圆形用户头像的实例_自定义封装类源代码
2017/09/18 PHP
详解php协程知识点
2018/09/21 PHP
JQuery打造PHP的AJAX表单提交实例
2009/11/03 Javascript
js创建表单元素并使用submit进行提交
2014/08/14 Javascript
javascript原型继承工作原理和实例详解
2016/04/07 Javascript
js动态生成form 并用ajax方式提交的实现方法
2016/09/09 Javascript
AngularJS递归指令实现Tree View效果示例
2016/11/07 Javascript
详谈jQuery Ajax(load,post,get,ajax)的用法
2017/03/02 Javascript
浅谈Emergence.js 检测元素可见性的 js 插件
2017/11/18 Javascript
nodejs实现截取上传视频中一帧作为预览图片
2017/12/10 NodeJs
jQuery实现合并表格单元格中相同行操作示例
2019/01/28 jQuery
JS猜数字游戏实例讲解
2020/06/30 Javascript
vue v-on:click传递动态参数的步骤
2020/09/11 Javascript
[06:44]2014DOTA2国际邀请赛-钥匙体育馆开战 开幕式振奋人心
2014/07/19 DOTA
[34:10]Secret vs VG 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.24
2019/09/10 DOTA
利用python实现简单的邮件发送客户端示例
2017/12/23 Python
python实现回旋矩阵方式(旋转矩阵)
2019/12/04 Python
Django框架教程之中间件MiddleWare浅析
2019/12/29 Python
如何基于Python和Flask编写Prometheus监控
2020/11/25 Python
德国咖啡批发商:Coffeefair
2019/08/26 全球购物
奥林匹亚体育:Olympia Sports
2020/12/30 全球购物
销售副总经理岗位职责
2013/12/11 职场文书
公司培训欢迎词
2014/01/10 职场文书
青年文明号事迹材料
2014/01/18 职场文书
关于赌博的检讨书
2014/01/24 职场文书
节约用电倡议书
2015/04/28 职场文书
2015社区健康教育工作总结
2015/05/20 职场文书
放飞理想主题班会
2015/08/14 职场文书
Java Shutdown Hook场景使用及源码分析
2021/06/15 Java/Android
SQL Server中搜索特定的对象
2022/05/25 SQL Server
css3手动实现pc端横向滚动
2022/06/21 HTML / CSS