Python闭包之返回函数的函数用法示例


Posted in Python onJanuary 27, 2018

闭包(closure)不是什么可怕的东西。如果用对了地方,它们其实可以很强大。闭包就是由其他函数动态生成并返回的函数,通俗地讲,在一个函数的内部,还有一个“内层”的函数,这个“内层”的函数是被返回的,它可以访问其创建者的局部命名空间中的变量。

下面是一个非常简单的例子:

# 定义一个函数
def make_closure(a):
  # 在函数内部再定义一个函数,其实这个里面的函数就被认为是闭包
   def closure():
     # 这里打印一下传递进来的数字是什么
     print('I know the secret : %d' % a)
   return closure

# 给make_closure函数赋值,这个7就是给参数a
closure1 = make_closure(7)
# 这个其实就是调用返回的closure函数,然后执行closure函数
closure1()

运行结果:

Python闭包之返回函数的函数用法示例

我的理解:其实闭包就是一个函数A里还有另一个函数B,因为返回值是函数B,所以在调用函数A的时候,如果想让函数B也执行,必须还要再调用一次函数B。

对于一个函数内嵌了N个函数,那么就需要初始化N次。

你可能会想,这到底有什么用。在实际工作中,你可以编写带有大量选项的非常一般化的函数,然后再组装出更简单更专门化的函数。

下面这个例子中创建了一个字符串格式化函数:

def format_and_pad(template, space):
  def formatter(x):
    return (template % x).rjust(space)

  return formatter
# 创建一个始终返回15位字符串的浮点数格式化器
fmt = format_and_pad('%.4f',15)
fmt(1.756)

运行结果:

Python闭包之返回函数的函数用法示例

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python创建和使用字典实例详解
Nov 01 Python
Python pass 语句使用示例
Mar 11 Python
Python编写屏幕截图程序方法
Feb 18 Python
对python .txt文件读取及数据处理方法总结
Apr 23 Python
Python Matplotlib实现三维数据的散点图绘制
Mar 19 Python
python pyqtgraph 保存图片到本地的实例
Mar 14 Python
python列表删除和多重循环退出原理详解
Mar 26 Python
python和js交互调用的方法
Jun 23 Python
使用SimpleITK读取和保存NIfTI/DICOM文件实例
Jul 01 Python
python中温度单位转换的实例方法
Dec 27 Python
浅析python字符串前加r、f、u、l 的区别
Jan 24 Python
Python包管理工具pip的15 个使用小技巧
May 17 Python
详解如何利用Cython为Python代码加速
Jan 27 #Python
详解Python 实现元胞自动机中的生命游戏(Game of life)
Jan 27 #Python
Python实现的栈(Stack)
Jan 26 #Python
使用python实现链表操作
Jan 26 #Python
Python中optparser库用法实例详解
Jan 26 #Python
python利用socketserver实现并发套接字功能
Jan 26 #Python
Django的HttpRequest和HttpResponse对象详解
Jan 26 #Python
You might like
星际流派综述
2020/03/04 星际争霸
PHP strncasecmp字符串比较的小技巧
2011/01/04 PHP
PHP编码转换函数 自动转换字符集支持数组转换
2012/12/16 PHP
PHP echo,print,printf,sprintf函数之间的区别与用法详解
2013/11/27 PHP
php自动识别文件编码并转换为UTF-8的方法
2014/06/12 PHP
PHP远程调试之XDEBUG
2015/12/29 PHP
详解WordPress开发中用于获取分类及子页面的函数用法
2016/01/08 PHP
在线编辑器中换行与内容自动提取
2009/04/24 Javascript
javascript new fun的执行过程
2010/08/05 Javascript
IFrame跨域高度自适应实现代码
2012/08/16 Javascript
用javascript关闭本窗口不弹出询问框的方法
2014/09/12 Javascript
深入理解jQuery3.0的domManip函数
2016/09/01 Javascript
NodeJs下的测试框架Mocha的简单介绍
2017/02/22 NodeJs
JS实现登录页密码的显示和隐藏功能
2017/12/06 Javascript
微信小程序之多列表的显示和隐藏功能【附源码】
2018/08/06 Javascript
重学JS 系列:聊聊继承(推荐)
2019/04/11 Javascript
一个Java程序猿眼中的前后端分离以及Vue.js入门(推荐)
2019/04/19 Javascript
微信小程序实现类似微信点击语音播放效果
2020/03/30 Javascript
Vue Object 的变化侦测实现代码
2020/04/15 Javascript
微信小程序 button样式设置为图片的方法
2020/06/19 Javascript
Linux下使用python自动修改本机网关代码分享
2015/05/21 Python
分析Python中设计模式之Decorator装饰器模式的要点
2016/03/02 Python
详解python中sort排序使用
2019/03/23 Python
python取余运算符知识点详解
2019/06/27 Python
python实现滑雪游戏
2020/02/22 Python
Python 列表反转显示的四种方法
2020/11/16 Python
html5手机端页面可以向右滑动导致样式受影响的问题
2018/06/20 HTML / CSS
西班牙灯具网上商店:Lampara.es
2018/06/05 全球购物
Lowe’s加拿大:家居装修、翻新和五金店
2019/12/06 全球购物
公司会计岗位职责
2014/02/13 职场文书
《最后的姿势》教学反思
2014/02/27 职场文书
《搭石》教学反思
2014/04/07 职场文书
医药公司采购员岗位职责
2015/04/03 职场文书
新学期开学标语2015
2015/07/16 职场文书
加强党性修养心得体会
2016/01/21 职场文书
css3 filter属性的使用简介
2021/03/31 HTML / CSS