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中urllib模块用法实例详解
Nov 19 Python
Python中index()和seek()的用法(详解)
Apr 27 Python
Python实现树的先序、中序、后序排序算法示例
Jun 23 Python
浅谈python迭代器
Nov 08 Python
通过Python模块filecmp 对文件比较的实现方法
Jun 29 Python
[原创]Python入门教程3. 列表基本操作【定义、运算、常用函数】
Oct 30 Python
Python元组常见操作示例
Feb 19 Python
Python3.5内置模块之time与datetime模块用法实例分析
Apr 27 Python
python实现QQ批量登录功能
Jun 19 Python
Python如何爬取微信公众号文章和评论(基于 Fiddler 抓包分析)
Jun 28 Python
python pptx复制指定页的ppt教程
Feb 14 Python
python 爬取免费简历模板网站的示例
Sep 27 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 伪静态隐藏传递参数名的四种方法
2010/02/22 PHP
检查php文件中是否含有bom的函数
2012/05/31 PHP
在laravel中使用with实现动态添加where条件
2019/10/10 PHP
PHP重载基础知识回顾
2020/09/10 PHP
DOM2非标准但却支持很好的几个属性小结
2012/01/21 Javascript
js根据给定的日期计算当月有多少天实现思路及代码
2013/02/25 Javascript
用jQuery获取IE9下拉框默认值问题探讨
2013/07/22 Javascript
JavaScript基础知识学习笔记
2014/12/02 Javascript
JQuery+CSS实现图片上放置按钮的方法
2015/05/29 Javascript
最全面的JS倒计时代码
2016/09/17 Javascript
用纯Node.JS弹出Windows系统消息提示框实例(MessageBox)
2017/05/17 Javascript
Node.js中多进程模块Cluster的介绍与使用
2017/05/27 Javascript
Angular.js中下拉框实现渲染html的方法
2017/06/18 Javascript
静态页面实现 include 引入公用代码的示例
2017/09/25 Javascript
Express系列之multer上传的使用
2017/10/27 Javascript
Angular实现svg和png图片下载实现
2019/05/05 Javascript
浅谈vuex的基本用法和mapaction传值问题
2019/11/08 Javascript
es5 类与es6中class的区别小结
2020/11/09 Javascript
Vue router传递参数并解决刷新页面参数丢失问题
2020/12/02 Vue.js
Python使用Pickle模块进行数据保存和读取的讲解
2019/04/09 Python
python lambda表达式(匿名函数)写法解析
2019/09/16 Python
Python发送邮件封装实现过程详解
2020/05/09 Python
html5 canvas里绘制椭圆并保持线条粗细均匀的技巧
2013/03/25 HTML / CSS
英国最大的婴儿监视器网上商店:Baby Monitors Direct
2018/04/24 全球购物
Nike法国官方网站:Nike.com FR
2018/07/22 全球购物
见习期自我鉴定
2013/11/07 职场文书
教师读书活动总结
2014/05/07 职场文书
媒体宣传策划方案
2014/05/25 职场文书
党性心得体会
2014/09/03 职场文书
工作作风整顿个人剖析材料
2014/10/11 职场文书
国庆节慰问信
2015/02/15 职场文书
python爬虫--selenium模块
2021/03/31 Python
Python NumPy灰度图像的压缩原理讲解
2021/08/04 Python
解析探秘fescar分布式事务实现原理
2022/02/28 Java/Android
淡雅古典唯美少女娇媚宁静迷人写真
2022/03/21 杂记
4种方法python批量修改替换列表中元素
2022/04/07 Python