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之print详解
Sep 28 Python
使用Python的Flask框架实现视频的流媒体传输
Mar 31 Python
Numpy数组的保存与读取方法
Apr 04 Python
python最长回文串算法
Jun 04 Python
程序员写Python时的5个坏习惯,你有几条?
Nov 26 Python
tensorflow 固定部分参数训练,只训练部分参数的实例
Jan 20 Python
python实现逢七拍腿小游戏的思路详解
May 26 Python
Python CategoricalDtype自定义排序实现原理解析
Sep 11 Python
python matplotlib绘制三维图的示例
Sep 24 Python
python Matplotlib数据可视化(1):简单入门
Sep 30 Python
用python 绘制茎叶图和复合饼图
Feb 26 Python
Python实现双向链表
May 25 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
Codeigniter操作数据库表的优化写法总结
2014/06/12 PHP
php  PATH_SEPARATOR判断当前服务器系统类型实例
2016/10/28 PHP
PHP使用finfo_file()函数检测上传图片类型的实现方法
2017/04/18 PHP
使用laravel和ajax实现整个页面无刷新的操作方法
2019/10/03 PHP
Js+XML 操作
2006/09/20 Javascript
用jquery来定位
2007/02/20 Javascript
JavaScript 中的replace方法说明
2007/04/13 Javascript
JavaScript面向对象编程入门教程
2014/04/16 Javascript
js中的setInterval和setTimeout使用实例
2014/05/09 Javascript
js获取窗口相对于屏幕左边和上边的位置坐标
2014/05/15 Javascript
JavaScript中字面量与函数的基本使用知识
2015/10/20 Javascript
ReactNative-JS 调用原生方法实例代码
2016/10/08 Javascript
angularjs中的$eval方法详解
2017/04/24 Javascript
Angular 4依赖注入学习教程之简介(一)
2017/06/04 Javascript
微信小程序页面缩放式侧滑效果的实现代码
2018/11/15 Javascript
详解vue-cli3多环境打包配置
2019/03/28 Javascript
JS实现提示效果弹出及延迟隐藏的功能
2019/08/26 Javascript
vue实现禁止浏览器记住密码功能的示例代码
2021/02/03 Vue.js
[56:45]DOTA2上海特级锦标赛D组小组赛#1 EG VS COL第一局
2016/02/28 DOTA
[53:10]完美世界DOTA2联赛决赛日 FTD vs GXR 第二场 11.08
2020/11/11 DOTA
SublimeText 2编译python出错的解决方法(The system cannot find the file specified)
2013/11/27 Python
python中的字典详细介绍
2014/09/18 Python
PYTHON 中使用 GLOBAL引发的一系列问题
2016/10/12 Python
python爬虫之百度API调用方法
2017/06/11 Python
Python自动化运维_文件内容差异对比分析
2017/12/13 Python
python处理DICOM并计算三维模型体积
2019/02/26 Python
Python requests.post方法中data与json参数区别详解
2020/04/30 Python
杭州SQL浙江浙大网新恩普软件有限公司
2013/07/27 面试题
优秀医生事迹材料
2014/02/12 职场文书
员工保密承诺书
2014/05/28 职场文书
商务英语专业求职信
2014/06/26 职场文书
基层党员干部四风问题整改方向和措施
2014/09/25 职场文书
党员批评与自我批评发言
2014/10/02 职场文书
个人自查自纠材料
2014/10/14 职场文书
银行求职信范文
2019/05/13 职场文书
win10蓝屏0xc0000001安全模式进不了怎么办?win10出现0xc0000001的解决方法
2022/08/05 数码科技