Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >python之函数式编程之闭包

python之函数式编程之闭包

原创
作者头像
用户8832503
发布于 2022-03-02 05:34:19
发布于 2022-03-02 05:34:19
18400
代码可运行
举报
文章被收录于专栏:php编辑php编辑
运行总次数:0
代码可运行

闭包 ( Closure) 是词法闭包 ( Lexical Closure) 的简称, 是引用自由变量的函数。这个被引用的自由变量将与这个函数一同存在, 即使已经离开创造它的环境也不例外。所以, 闭包是由函数和与其相关的引用环境组合而成的实体。闭包是函数式编程的重要语法结构。

Python 也支持这一特性。在 Python 中创建一个闭包可以归结为以下三点:

● 闭包函数必须有内嵌函数;

● 内嵌函数需要引用上一级函数的变量;

● 闭包函数必须返回内嵌函数。

举个闭包例子:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#! /usr/bin/env python
def GreetingConfig(prefix):
    def greeting(postfix):
    print(prefix, postfix)
    return greeting
    
M = GreetingConfig("good morning")
M("efon")
M("fighting")

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Python函数式编程之闭包
-------------------------函数式编程之*******闭包------------------------ Note: 一:简介 函数式编程不是程序必须要的,但是对于简化程序有很重要的作用。 Python中一切都是对象,函数也是对象 a = 1 a = 'str' a = func 二:闭包 闭包是由函数及其相关的引用环境组合而成的实体(即:闭包=函数+环境变量) 如果在一个内部函数里,对在外部作用域(但不是在全局作用域)的变量
py3study
2020/01/19
3570
在下函数式编程,有何贵干?
本文简单介绍了一下函数式编程的各种基本特性,希望能够对于准备使用函数式编程的人起到一定入门作用。 函数式编程,一个一直以来都酷,很酷,非常酷的名词。虽然诞生很早也炒了很多年但是一直都没有造成很大的水花
CSDN技术头条
2018/02/12
7920
在下函数式编程,有何贵干?
浅谈Go语言中闭包的使用
闭包(Closure),又称词法闭包(Lexical Closure)或函数闭包(function closures),是引用了自由变量的函数。这个被引用的自由变量将和这个函数一同存在,即使已经离开了创造它的环境也不例外。所以,有另一种说法认为闭包是由函数和与其相关的引用环境组合而成的实体。 ——Google搜索引擎维基百科 当然,上面那段看上去多少有点拗口了。 说得简单点,闭包实际上就是一种语法糖机制,而这种语法糖机制可以简化编程,从而可以提高代码的可读性。比如,有时候对外部的局部变量进行访问,没这种
企鹅号小编
2018/01/12
2.6K0
浅谈Go语言中闭包的使用
理解python中的闭包
在一个函数内部嵌套定义了另一个函数,其中内部函数使用了外部函数作用域的变量(自由变量),并且外部函数的返回值是内部函数的引用,当外部函数结束时,外部函数的变量会被绑定到内部函数,由此就构成了闭包。闭包的本质是一个函数,它有两部分组成:内部函数及引用的外部函数变量,闭包使这些变量始终保存在内存中,不会随外部函数的结束而清除。
py3study
2020/01/13
7430
Python 函数式编程和面向对象编程
接收abs函数,定义一个函数,接收x,y,z三个参数。其中x,y是数值,z是函数 。
周小董
2019/03/25
1.1K0
Python 函数式编程和面向对象编程
Python——带你五分钟了解函数式编程与闭包
函数式编程这个概念我们可能或多或少都听说过,刚听说的时候不明觉厉,觉得这是一个非常黑科技的概念。但是实际上它的含义很朴实,但是延伸出来许多丰富的用法。
TechFlow-承志
2020/04/15
5370
Scala专题系列(九) : Scala函数式编程
普通一个函数是输入一个参数输出一个返回值,而带有副作用的函数不仅仅返回一个值,还带有其它的操作:
用户5252199
2022/04/18
4260
函数式编程简介
函数式编程是如何编写程序的方法论,主要思想是把运算过程尽量写成一些列嵌套函数的调用。 可以归结为面向过程编程,把复杂任务分解成简单的任务
epoos
2022/06/06
6920
从λ演算到函数式编程聊闭包(1):闭包概念在Java/PHP/JS中形式
维基百科上对闭包的解释就很经典: 在计算机科学中,闭包(Closure)是词法闭包(Lexical Closure)的简称,是引用了自由变量的函数。这个被引用的自由变量将和这个函数一同存在,即使已经离开了创造它的环境也不例外。所以,有另一种说法认为闭包是由函数和与其相关的引用环境组合而成的实体。 Peter J. Landin 在1964年将术语闭包定义为一种包含环境成分和控制成分的实体。 百度百科: 闭包是可以包含自由(未绑定到特定对象)变量的代码块;这些变量不是在这个代码块内或者任何全局上下文中定义的,而是在定义代码块的环境中定义(局部变量)。“闭包” 一词来源于以下两者的结合:要执行的代码块(由于自由变量被包含在代码块中,这些自由变量以及它们引用的对象没有被释放)和为自由变量提供绑定的计算环境(作用域)。
周陆军
2021/08/24
8960
python生产实战 python 闭包之庖丁解牛篇
注:这篇文章很长,但我保证你看完后能获得足够多对闭包的了解,也会彻底理解清楚中间件的实现原理。
python编程从入门到实践
2021/03/03
5800
python生产实战 python 闭包之庖丁解牛篇
Python函数式编程 入门必备
python 支持函数式编程,提到数式编程,大家首先想到的是多个函数内嵌。的确是这样。不过,要想入门函数式编程,里面涉及到的闭包,是不得不掌握的,换句话说,如果不了解闭包就使用函数式编程,那么,函数式编程的功能特性可能不会完全体现出来。
double
2019/05/17
8900
函数式编程杂谈
比起命令式编程,函数式编程更加强调程序执行的结果而非执行的过程,倡导利用若干简单的执行单元让计算结果不断演进,逐层推导出复杂的运算。本文通过函数式编程的一些趣味用法来阐述学习函数式编程的奇妙之处。
2020labs小助手
2019/09/16
4920
Python函数式编程之内置高阶函数
前面我们介绍了高阶函数,python自带了一些高阶函数,也就是python内置高阶函数。
efonfighting
2020/05/16
4300
python函数作用域与闭包
在python中,是用def来创建一个函数,实际上def只是完成了一个类似与赋值的操作---------把一个函数对象赋值给一个变量名,还记得我们之前说过在python中变量名只是一个标识符,相当于起到了一个指针的作用,它没有类型(明确这一点是很重要的),又因为python中的一切皆对象,函数当然也不例外,所以,函数被创建后就可以赋值给任意的变量名,也可以作为参数传递给另外一个函数,也可以作为函数的返回值。下面是相应的代码演示 函数赋值给任意变量名:
tnt阿信
2020/08/05
5840
python函数作用域与闭包
翻译连载 |《你不知道的JS》姊妹篇 |《JavaScript 轻量级函数式编程》- 第 7 章: 闭包 vs 对象
原文地址:Functional-Light-JS 原文作者:Kyle Simpson-《You-Dont-Know-JS》作者 第 7 章: 闭包 vs 对象 数年前,Anton van Straat
iKcamp
2018/01/04
1.4K0
Python的闭包和装饰器
装饰器(Decorator)相对简单,咱们先介绍它:“装饰器的功能是将被装饰的函数当作参数传递给与装饰器对应的函数(名称相同的函数),并返回包装后的被装饰的函数”,听起来有点绕,没关系,直接看示意图,其中 a 为与装饰器 @a 对应的函数, b 为装饰器修饰的函数,装饰器@a的作用是:
Debian中国
2018/12/20
5400
进阶 | 函数与函数式编程
纵观JavaScript中所有必须需要掌握的重点知识中,函数是我们在初学的时候最容易忽视的一个知识点。在学习的过程中,可能会有很多人、很多文章告诉你面向对象很重要,原型很重要,可是却很少有人告诉你,面向对象中所有的重点难点,几乎都与函数息息相关。 包括我之前几篇文章介绍的执行上下文,变量对象,闭包,this等,都是围绕函数来展开。 我知道很多人在学习中,很急切的希望自己快一点开始学习面向对象,学习模块,学习流行框架,然后迅速成为高手。但是我可以很负责的告诉你,关于函数的这些基础东西没理解到一定程度,那么你
用户1097444
2022/06/29
3750
进阶 | 函数与函数式编程
写 Python 代码不可不知的函数式编程技术
近来,越来越多人使用函数式编程(functional programming)。因此,很多传统的命令式语言(如 Java 和 Python)开始支持函数式编程技术。本文对 Python 中的函数式编程技术进行了简单的入门介绍。
OpenCV学堂
2020/02/21
5770
九、函数与函数式编程
纵观JavaScript中所有必须需要掌握的重点知识中,函数是我们在初学时最容易忽视的知识点。可能会有很多人、很多文章告诉你面向对象很重要,原型很重要,可是却很少有人告诉你,面向对象中所有的重点难点,几乎都与函数息息相关。
用户6901603
2020/07/27
6400
Python 高级教程之函数式编程
函数式编程是一种编程范式,我们在其中尝试以纯数学函数风格绑定所有内容。它是一种声明式的编程风格。它的主要焦点是“要解决什么”,而命令式风格的主要焦点是“如何解决”。它使用表达式而不是语句。计算表达式以产生值,而执行语句以分配变量。
海拥
2022/05/07
8200
相关推荐
Python函数式编程之闭包
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验