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 06 Python
Python argv用法详解
Jan 08 Python
Python使用一行代码获取上个月是几月
Aug 30 Python
python GUI库图形界面开发之PyQt5窗口背景与不规则窗口实例
Feb 25 Python
python GUI库图形界面开发之pyinstaller打包python程序为exe安装文件
Feb 26 Python
django 多数据库及分库实现方式
Apr 01 Python
部署Django到阿里云服务器教程示例
Jun 03 Python
Python 基于jwt实现认证机制流程解析
Jun 22 Python
python3 中使用urllib问题以及urllib详解
Aug 03 Python
Python selenium实现断言3种方法解析
Sep 08 Python
python使用dlib进行人脸检测和关键点的示例
Dec 05 Python
python实现简易名片管理系统
Apr 11 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会员权限控制实现原理分析
2011/05/29 PHP
基于PHP的简单采集数据入库程序【续篇】
2014/07/30 PHP
Smarty中调用FCKeditor的方法
2014/10/27 PHP
Yii视图CGridView列表用法实例分析
2016/07/12 PHP
Laravel中使用Queue的最基本操作教程
2017/12/27 PHP
详解Laravel服务容器的绑定与解析
2019/11/05 PHP
基于jquery的表头固定的若干方法
2011/01/27 Javascript
11个用于提高排版水平的基于jquery的文字效果插件
2012/09/14 Javascript
JQuery的ready函数与JS的onload的区别详解
2013/11/21 Javascript
通过js来制作复选框的全选和不选效果
2014/05/22 Javascript
JavaScript 基本概念
2015/01/20 Javascript
Nuxt.js SSR与权限验证的实现
2018/11/21 Javascript
详解webpack4.x之搭建前端开发环境
2019/03/28 Javascript
微信小程序template模版的使用方法
2019/04/13 Javascript
浅入深出Vue之自动化路由
2019/08/06 Javascript
layui的数据表格+springmvc实现搜索功能的例子
2019/09/28 Javascript
[00:11]战神迅矛
2019/03/06 DOTA
Python中random模块用法实例分析
2015/05/19 Python
Python实现八大排序算法
2016/08/13 Python
python如何保存文本文件
2020/06/07 Python
python 如何区分return和yield
2020/09/22 Python
python collections模块的使用
2020/10/16 Python
Jupyter Notebook安装及使用方法解析
2020/11/12 Python
HTML5 audio标签使用js进行播放控制实例
2015/04/24 HTML / CSS
越南综合购物网站:Lazada越南
2019/06/10 全球购物
Ben Sherman官方网站:英国男装品牌
2019/10/22 全球购物
Edwaybuy西班牙:小米在线商店
2019/12/04 全球购物
计算机系毕业生推荐信
2013/11/06 职场文书
办公室驾驶员岗位职责
2013/11/15 职场文书
最新自我评价范文
2013/11/16 职场文书
《池塘边的叫声》教学反思
2014/04/12 职场文书
住房租房协议书
2014/08/20 职场文书
如何签定毕业生就业协议书
2014/09/28 职场文书
先进个人事迹材料范文
2014/12/30 职场文书
会议主持词开场白
2015/05/28 职场文书
有趣的二维码:使用MyQR和qrcode来制作二维码
2021/05/10 Python