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实现 多进程导入CSV数据到 MySQL
Feb 26 Python
python的mysqldb安装步骤详解
Aug 14 Python
Python实现定时精度可调节的定时器
Apr 15 Python
Pycharm设置去除显示的波浪线方法
Oct 28 Python
浅谈Scrapy网络爬虫框架的工作原理和数据采集
Feb 07 Python
Python转换时间的图文方法
Jul 01 Python
python创建学生成绩管理系统
Nov 22 Python
python网络编程socket实现服务端、客户端操作详解
Mar 24 Python
Django-xadmin+rule对象级权限的实现方式
Mar 30 Python
Python接口测试数据库封装实现原理
May 09 Python
Python-jenkins 获取job构建信息方式
May 12 Python
 分享一个Python 遇到数据库超好用的模块
Apr 06 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
收音机指标测试方法及仪器
2021/03/01 无线电
PHP程序员最常犯的11个MySQL错误小结
2010/11/20 PHP
php resizeimage 部分jpg文件 生成缩略图失败的原因分析及解决办法
2016/03/23 PHP
thinkPHP框架整合tcpdf插件操作示例
2018/08/07 PHP
又一个图片自动缩小的JS代码
2007/03/10 Javascript
JS获取父节点方法
2009/08/20 Javascript
jQuery与ExtJS之选择实例分析
2010/08/19 Javascript
javascript面向对象之二 命名空间
2011/02/08 Javascript
基于JQuery的日期联动实现代码
2011/02/24 Javascript
Jjcarousellite 实现图片列表滚动的简单实例
2013/11/29 Javascript
JS+CSS实现美化的下拉列表框效果
2015/08/11 Javascript
详解如何将angular-ui的图片轮播组件封装成一个指令
2017/05/09 Javascript
Vue内容分发slot(全面解析)
2017/08/19 Javascript
JS中this的指向以及call、apply的作用
2018/05/06 Javascript
Vue通过ref父子组件拿值方法
2018/09/12 Javascript
使用Easyui实现查询条件的后端传递并自动刷新表格的两种方法
2019/09/09 Javascript
vue路由传参三种基本方式详解
2019/12/09 Javascript
[02:53]DOTA2亚洲邀请赛 NewBee战队巡礼
2015/02/03 DOTA
[52:37]完美世界DOTA2联赛循环赛 Forest vs DM BO2第一场 10.29
2020/10/29 DOTA
简单介绍Python的Django框架的dj-scaffold项目
2015/05/30 Python
python 打印对象的所有属性值的方法
2016/09/11 Python
Python简单实现安全开关文件的两种方式
2016/09/19 Python
python中requests使用代理proxies方法介绍
2017/10/25 Python
Python装饰器使用你可能不知道的几种姿势
2019/10/25 Python
Python编程快速上手——选择性拷贝操作案例分析
2020/02/28 Python
Python基于内置函数type创建新类型
2020/10/22 Python
基于Python模拟浏览器发送http请求
2020/11/06 Python
HTML5新表单元素_动力节点Java学院整理
2017/07/12 HTML / CSS
MATCHESFASHION.COM法国官网:英国奢侈品零售商
2018/01/04 全球购物
优秀党员主要事迹
2014/01/19 职场文书
高中生的自我鉴定范文
2014/01/24 职场文书
2015年计划生育协会工作总结
2015/05/13 职场文书
趣味运动会简讯
2015/07/20 职场文书
2019最新版火锅店的创业计划书 !
2019/07/12 职场文书
浅谈@Value和@Bean的执行顺序问题
2021/06/16 Java/Android
阿里面试Nacos配置中心交互模型是push还是pull原理解析
2022/07/23 Java/Android