zoukankan      html  css  js  c++  java
  • python-函数闭包

    闭包的理解

    我们可以将闭包理解为一种特殊的函数,这种函数由两个函数的嵌套组成,且称之为外函数和内函数,外函数返回值是内函数的引用,此时就构成了闭包。

    闭包的格式

    1 def 外层函数(参数):
    2     def 内层函数():
    3         print("内层函数执行", 参数)
    4 
    5     return 内层函数
    6 
    7 
    8 内层函数的引用 = 外层函数("传入参数")
    9 内层函数的引用()

    外层函数中的参数,不一定要有,据情况而定,但是一般情况下都会有并在内函数中使用到

    案例如下:

    1 def func(a, b):
    2     def line(x):
    3         return a * x - b
    4 
    5     return line
    6 
    7 
    8 line = func(2, 3)
    9 print(line(5))

    内函数中修改外函数的值

    一般在函数结束时,会释放临时变量,但在闭包中,由于外函数的临时变量在内函数中用到,此时外函数会把临时变量与内函数绑定到一起,这样虽然外函数结束了,但调用内函数时依旧能够使用临时变量,即闭包外层的参数可以在内存中进行保留
    如果想要在内函数中修改外函数的值,需要使用 nonlocal 关键字声明变量

     1 def fun1(a,b):
     2     def fun2(x):
     3         nonlocal a
     4         a = 3
     5         return a * x - b
     6                     
     7     return fun2
     8 
     9 fun_1 = fun1(2,1)
    10 print(fun_1(1))

    闭包的用途

    Python中,闭包的主要用途就是用于装饰器的实现

  • 相关阅读:
    Evanyou Blog 彩带
    Evanyou Blog 彩带
    Evanyou Blog 彩带
    Evanyou Blog 彩带
    Evanyou Blog 彩带
    Evanyou Blog 彩带
    Evanyou Blog 彩带
    ThinkCMF X1.6.0-X2.2.3框架任意内容包含漏洞分析复现
    Apache Solr Velocity模板注入RCE漏洞复现
    WebShell代码分析溯源(十一)
  • 原文地址:https://www.cnblogs.com/mylearning-log/p/10907383.html
Copyright © 2011-2022 走看看