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学习笔记 下载
Feb 10 Python
Python写入CSV文件的方法
Jul 08 Python
Python脚本实现12306火车票查询系统
Sep 30 Python
简单谈谈Python中的几种常见的数据类型
Feb 10 Python
django rest framework 数据的查找、过滤、排序的示例
Jun 25 Python
Python中的引用知识点总结
May 20 Python
对Python 中矩阵或者数组相减的法则详解
Aug 26 Python
Python开发之基于模板匹配的信用卡数字识别功能
Jan 13 Python
python清空命令行方式
Jan 13 Python
翻转数列python实现,求前n项和,并能输出整个数列的案例
May 03 Python
使用keras和tensorflow保存为可部署的pb格式
May 25 Python
Python运算符+与+=的方法实例
Feb 18 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 极验验证码实例讲解
2016/09/29 PHP
Convert Seconds To Hours
2007/06/16 Javascript
jQuery学习总结之元素的相对定位和选择器(持续更新)
2011/04/26 Javascript
JS高级笔记
2011/07/13 Javascript
js 关于=+与+=日期函数使用说明(赋值运算符)
2011/11/15 Javascript
定时器(setTimeout/setInterval)调用带参函数失效解决方法
2013/03/26 Javascript
基于jquery的网站幻灯片切换效果焦点图代码
2013/09/15 Javascript
Js表格万条数据瞬间加载实现代码
2014/02/20 Javascript
node.js中的fs.exists方法使用说明
2014/12/17 Javascript
js小数计算小数点后显示多位小数的实现方法
2016/05/30 Javascript
解决jQuery ajax请求在IE6中莫名中断的问题
2016/06/20 Javascript
vue-cli如何快速构建vue项目
2017/04/26 Javascript
JS原生数据双向绑定实现代码
2017/08/14 Javascript
ES6模板字符串和标签模板的应用实例分析
2019/06/25 Javascript
Vue中computed及watch区别实例解析
2020/08/01 Javascript
[02:48]DOTA2英雄基础教程 暗夜魔王
2013/12/12 DOTA
Python单链表的简单实现方法
2014/09/23 Python
Python实现的简单文件传输服务器和客户端
2015/04/08 Python
Python multiprocessing模块中的Pipe管道使用实例
2015/04/11 Python
python+VTK环境搭建及第一个简单程序代码
2017/12/13 Python
Python学习_几种存取xls/xlsx文件的方法总结
2018/05/03 Python
浅析Python四种数据类型
2018/09/26 Python
python实现在图片上画特定大小角度矩形框
2018/10/24 Python
用python脚本24小时刷浏览器的访问量方法
2018/12/07 Python
Python学习笔记之Zip和Enumerate用法实例分析
2019/08/14 Python
python获取本周、上周、本月、上月及本季的时间代码实例
2020/09/08 Python
Python爬虫逆向分析某云音乐加密参数的实例分析
2020/12/04 Python
Sephora丝芙兰泰国官方网站:国际知名化妆品购物
2017/11/15 全球购物
下面关于"联合"的题目的输出是什么
2013/08/06 面试题
什么是SQL Server的确定性函数和不确定性函数
2016/08/04 面试题
大学生找工作推荐信范文
2013/11/28 职场文书
教师档案管理制度
2014/01/23 职场文书
餐饮周年庆活动方案
2014/08/14 职场文书
无财产离婚协议书范本
2014/10/28 职场文书
统计员岗位职责
2015/02/11 职场文书
货款欠条范本
2015/07/03 职场文书