闭包 桃扇骨 2022-02-20 00:35 319阅读 0赞 # **闭包** # ### **1. 函数引用** ### def test1(): print("--- in test1 func----") \#调用函数 test1() \#引用函数 ret = test1 print(id(ret)) print(id(test1)) \#通过引用调用函数 ret() 运行结果: \--- in test1 func----140212571149040140212571149040 \--- in test1 func---- ### **2. 什么是闭包** ### \#定义一个函数def test(number): \#在函数内部再定义一个函数,并且这个函数用到了外边函数的变量,那么将这个函数以及用到的一些变量称之为闭包 def test\_in(number\_in): print("in test\_in 函数, number\_in is %d"%number\_in) return number+number\_in \#其实这里返回的就是闭包的结果 return test\_in \#给test函数赋值,这个20就是给参数number ret = test(20) \#注意这里的100其实给参数number\_in print(ret(100)) \#注意这里的200其实给参数number\_in print(ret(200)) 运行结果: in test\_in 函数, number\_in is 100120 in test\_in 函数, number\_in is 200220 ### **3. 闭包再理解** ### 内部函数对外部函数作用域里变量的引用(非全局变量),则称内部函数为闭包。 \# closure.py def counter(start=0): count=\[start\] def incr(): count\[0\] += 1 return count\[0\] return incr 启动python解释器 import closeure c1=closeure.counter(5) print(c1())\#6 print(c1())\#7 c2=closeure.counter(100) print(c2())\#101 print(c2())\#102 **nonlocal访问外部函数的局部变量(python3)** def counter(start=0): def incr(): nonlocal start start += 1 return start return incr c1 = counter(5) print(c1()) print(c1()) c2 = counter(50) print(c2()) print(c2()) print(c1()) print(c1()) print(c2()) print(c2()) ### **4. 看一个闭包的实际例子:** ### def line\_conf(a, b): def line(x): return a\*x + b return line line1 = line\_conf(1, 1) line2 = line\_conf(4, 5) print(line1(5)) print(line2(5)) 这个例子中,函数line与变量a,b构成闭包。在创建闭包的时候,我们通过line\_conf的参数a,b说明了这两个变量的取值,这样,我们就确定了函数的最终形式(y = x + 1和y = 4x + 5)。我们只需要变换参数a,b,就可以获得不同的直线表达函数。由此,我们可以看到,闭包也具有提高代码可复用性的作用。 如果没有闭包,我们需要每次创建直线函数的时候同时说明a,b,x。这样,我们就需要更多的参数传递,也减少了代码的可移植性。
相关 闭包 函数嵌套函数 内部函数使用外部函数的变量 外部函数被调用 优点: 延长局部变量的声明周期 缺点: [内存泄漏][Link 1] [Link 1]: ht 朱雀/ 2023年03月14日 13:57/ 0 赞/ 240 阅读
相关 闭包 1、定义: 当一个内部函数被其外部函数之外的变量引用时,就形成了一个闭包 function A(){ var count = 0; 素颜马尾好姑娘i/ 2022年06月09日 09:20/ 0 赞/ 249 阅读
相关 闭包 先来看一个题目例子,我将在下一环节出闭包讲解。。 题目描述 实现函数 makeClosures,调用之后满足如下条件: 1、返回一个函数数组 result,长度与 喜欢ヅ旅行/ 2022年06月04日 05:51/ 0 赞/ 241 阅读
相关 闭包 1.闭包的作用 1. 实现公有变量 eg:函数累加器 1. 可以做缓存(存储结构) function eater(){ var f 落日映苍穹つ/ 2022年06月04日 04:05/ 0 赞/ 253 阅读
相关 闭包 写在前面 > 其实闭包这个词在很多的地方都听到过,以前看到说这是前端javascript这门语言的所具有的特点。当时不知所以然也没接触到对应的概念,现在遇到一个问题就是, 桃扇骨/ 2022年05月15日 03:14/ 0 赞/ 302 阅读
相关 闭包 JS闭包 > 闭包是函数和声明该函数的词法环境的组合 从本质上讲,闭包是外部函数和内部函数链接的桥梁;也就是在一个作用域中可以访问另一个作用域的变量,外部函数作用 朴灿烈づ我的快乐病毒、/ 2022年04月03日 15:54/ 0 赞/ 301 阅读
相关 闭包 1.闭包 2.原型链 3.深/浅拷贝 4.this指向 5.柯里式 6.ES6 7.webpack 配置 打包 8.虚拟dom 9.js 堆栈 我就是我/ 2022年03月06日 06:06/ 0 赞/ 306 阅读
相关 闭包 闭包 1. 函数引用 def test1(): print("--- in test1 func----") \调用函数 test1() \引用函数 桃扇骨/ 2022年02月20日 00:35/ 0 赞/ 320 阅读
相关 闭包 在函数内定义个函数,并将函数作为结果返回。返回的函数可以调用外部函数的参数,如果该函数被执行,将返回已经结算出的值 <!DOCTYPE html> <html 古城微笑少年丶/ 2022年02月01日 09:01/ 0 赞/ 324 阅读
相关 闭包 闭包: 就是能够读取其他函数内部变量的函数或者说闭包就有权访问另一个函数作用域中的变量的函数。 作用: 1.可以读取函数的变量 2.让这些变量的值始终保存在内存中 3 墨蓝/ 2021年10月01日 06:58/ 0 赞/ 451 阅读
还没有评论,来说两句吧...