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文件操作类操作实例详解
Jul 11 Python
python实现根据窗口标题调用窗口的方法
Mar 13 Python
python实现线程池的方法
Jun 30 Python
python timestamp和datetime之间转换详解
Dec 11 Python
Python cookbook(数据结构与算法)找到最大或最小的N个元素实现方法示例
Feb 13 Python
Python利用正则表达式实现计算器算法思路解析
Apr 25 Python
Python格式化输出字符串方法小结【%与format】
Oct 29 Python
python opencv 读取本地视频文件 修改ffmpeg的方法
Jan 26 Python
新年福利来一波之Python轻松集齐五福(demo)
Jan 20 Python
python实现字符串和数字拼接
Mar 02 Python
python实现ftp文件传输系统(案例分析)
Mar 20 Python
python将字典内容写入json文件的实例代码
Aug 12 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数据集构建JSON格式及新数组的方法
2012/11/07 PHP
php实现utf-8转unicode函数分享
2015/01/06 PHP
php实现批量删除挂马文件及批量替换页面内容完整实例
2016/07/08 PHP
PHP面向对象程序设计之对象克隆clone和魔术方法__clone()用法分析
2019/06/12 PHP
Yii框架日志操作图文与实例详解
2019/09/09 PHP
Prototype使用指南之dom.js
2007/01/10 Javascript
js 控制下拉菜单刷新的方法
2013/03/03 Javascript
Javascript优化技巧之短路表达式详细介绍
2015/03/27 Javascript
javaScript知识点总结(必看篇)
2016/06/10 Javascript
jQuery简单实现title提示效果示例
2016/08/01 Javascript
JS刷新父窗口的几种方式小结(推荐)
2016/11/09 Javascript
js设置文字颜色的方法示例
2016/12/30 Javascript
Angular 4.X开发实践中的踩坑小结
2017/07/04 Javascript
angularJS的radio实现单项二选一的使用方法
2018/02/28 Javascript
微信小程序基于高德地图查找位置并显示文字
2019/10/30 Javascript
element实现合并单元格通用方法
2019/11/13 Javascript
python计算程序开始到程序结束的运行时间和程序运行的CPU时间
2013/11/28 Python
python基础教程之获取本机ip数据包示例
2014/02/10 Python
python计算文本文件行数的方法
2015/07/06 Python
Python模拟脉冲星伪信号频率实例代码
2018/01/03 Python
Python读取csv文件分隔符设置方法
2019/01/14 Python
在python Numpy中求向量和矩阵的范数实例
2019/08/26 Python
python打开音乐文件的实例方法
2020/07/21 Python
python中pow函数用法及功能说明
2020/12/04 Python
宝塔面板出现“open_basedir restriction in effect. ”的解决方法
2021/03/14 PHP
利用HTML5绘制点线面组成的3D图形的示例
2015/05/12 HTML / CSS
Bally美国官网:经典瑞士鞋履、手袋及配饰奢侈品牌
2018/05/18 全球购物
芭比波朗加拿大官方网站:Bobbi Brown Cosmetics CA
2020/11/05 全球购物
Vector, ArrayList, HashTable, HashMap哪些是线程安全的,哪些不是
2015/10/12 面试题
计算机专业个人简短的自我评价
2013/10/23 职场文书
小加工厂管理制度
2014/01/21 职场文书
财经学院自荐信范文
2014/02/02 职场文书
运动会开幕式邀请函
2014/02/03 职场文书
护林员个人总结
2015/03/04 职场文书
2019大学竞选班长发言稿
2019/06/27 职场文书
详解Go语言Slice作为函数参数的使用
2021/07/02 Golang