仔仔细细的闭包

2024-01-09 14:10
文章标签 闭包 仔仔细细

本文主要是介绍仔仔细细的闭包,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

什么是闭包呢?

闭包就是内层函数,对外层函数(非全局)的变量的引用,叫闭包

怎么理解呢?

f(g(x)),在这个函数里,f就是外层函数,g就是内层函数

简简单单

好处:

1.可以让一个局部变量常驻内存
2.防止其他程序修改这个变量

1.函数的返回值通过return 返回一个变量,此外,函数也可以返回另一个函数名

def f1():print("欢迎大家!")
def f2():print("回头科科")return f1
a=f2()
a()
print("*"*50)
f2()()

2.还可以将 f2( ) 函数的定义移动到 f1( )函数中,这样在 f1( ) 函数外的作用域就不能直接调用 f2( ) 函数

def f1():print("回头科科")def f2():print("欢迎大家!")return f2
a=f1()
a()
print("*"*50)
f1()()

 

3.示例

在函数f1()中传入一个参数,在函数f2()中对该参数中的元素求和。

 

​
list = [1,2,4,5,6]
def f1(*args):def f2():return sum(*args)return f2
x = f1(list)
print(x())​

怎么理解呢

首先这样看,调用函数的时候按照顺序就会执行到return f2

这个时候,才会执行函数f2

并且将函数f2的返回值返回到主函数

最后总结:

如果内层函数引用了外层函数的变量(包括其参数),并且外层函数返回内层函数名,这种函数架构称为闭包。闭包满足的如下3个条件:
1. 内层函数的定义嵌套在外层函数中。
2. 内层函数引用外层函数的变量
3. 外层函数返回内层函数名

科科加油!!

这篇关于仔仔细细的闭包的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/587394

相关文章

JavaScript深入理解闭包

闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。 一、变量的作用域 要理解闭包,首先必须理解Javascript特殊的变量作用域。 变量的作用域无非就是两种:全局变量和局部变量。 Javascript语言的特殊之处,就在于函数内部可以直接读取全局变量。 Js代码   var n=999;   function f1

【JavaScript】在循环内使用闭包

================== 基本循环语句 ==================for (var i = 0; i < 5; i++) {console.log(i);}console.log(i);//这个大家应该很快就知道了,012345================== setTimeout与var语句的for循环 ==================for (var i

python闭包的作用

python闭包的作用 Python中的闭包是一种强大的编程概念,它在处理函数和作用域时提供了灵活性和便利性。下面是闭包的一些主要作用和应用: 1. 封装数据和函数 闭包可以将数据和操作这些数据的函数封装在一起,使得外部无法直接访问这些数据。这有助于创建数据的私有性。 def make_counter():count = 0def counter():<

【HDU】1317 XYZZY spfa判负环+floyd求传递闭包

传送门:【HDU】1317 XYZZY 题目分析:首先我们可以用spfa判最长路上是否有正权环,但是有正权环却不等价于能到达终点。这是我们还需要判断是否能从正权环中走到终点,这个可以用传递闭包搞定。如果没有正权环就看是否能从起点到终点就好了。 代码如下: #include <cstdio>#include <cstring>#include <algorithm>

前端组件化(一) 函数闭包 简单版

实现功能: 输入几个字, 就实时显示几个字 截图: 作用域隔离 为了使整个代码的作用域清晰明了, 封装成textCont 函数 <!DOCTYPE HTML><html><head><title>单通道数据流</title></head><body><input type="text" id="J_inp"><span id="J_text"></span></body><script sr

[Python]闭包与装饰器

闭包与装饰器 闭包: ​ python的一种独有写法,可以实现:对外部函数的局部变量进行’临时’存储 作用: ​ 可以"延长"函数内 局部变量的生命周期. 构成条件: 1. 有嵌套. 外部函数内要嵌套 内部函数.2. 有引用. 在内部函数中使用 外部函数的变量.3. 有返回. 在外部函数中, 返回 内部函数名, 即: 内部函数对象 格式def 外部函数

初探swift语言的学习笔记三(闭包-匿名函数)

作者:fengsh998 原文地址:http://blog.csdn.net/fengsh998/article/details/29353019 转载请注明出处 如果觉得文章对你有所帮助,请通过留言或关注微信公众帐号fengsh998来支持我,谢谢! 很多高级语言都支持匿名函数操作,在OC中的block也为大家所熟悉,然面在swift里好像是被

深入理解JavaScript系列(16):闭包(Closures)

介绍 本章我们将介绍在JavaScript里大家经常来讨论的话题 —— 闭包(closure)。闭包其实大家都已经谈烂了。尽管如此,这里还是要试着从理论角度来讨论下闭包,看看ECMAScript中的闭包内部究竟是如何工作的。 正如在前面的文章中提到的,这些文章都是系列文章,相互之间都是有关联的。因此,为了更好的理解本文要介绍的内容,建议先去阅读第14章作用域链和第12章变量对象。 英

Javascript归纳与总结——this指向及其改变、new关键字与原型链、异步、闭包和函数防抖与节流

this指向及其改变 普通函数在调用时,this为obj.obj1.fun(),this->obj1,箭头函数在声明定义时this->obj。 Javascript中bind、call、apply區別-CSDN博客 new关键字与原型链  从原型链视角解读VueComponent与Vue关系_vue中重要的原型链关系-CSDN博客 prototype这个属性只有函数对象才有!(构造)

python基础-闭包、装饰器

闭包 什么是闭包? 内部函数引用了外部函数的变量 看下面的代码 def f(b):def f1():print(b)f1()print(f1.__closure__)f(1) 输出如下: E:\python\python_sdk\python.exe E:/python/py_pro/demo.py1(<cell at 0x01406390: int object at 0x56A