• 闭包


    闭包

    定义:如果在一个内部函数里,对在外部作用域(但不是在全局作用域)的变量进行引用,那么内部函数就被认为是闭包;

    1 def outer():
    2     x = 10
    3     def inner():  #条件一 inner就是内部函数
    4 
    5         print(x)  #条件二 引用外部环境的一个变量
    6 
    7     return inner  #结论:内部函数inner就是一个闭包
    8 
    9 outer()()  #调用outer时会返回inner

    关于闭包:闭包=内部函数+定义函数时的一个环境

    以形参的方式传入x的值

    1 def outer(x):
    2 
    3     def inner():  #条件一 inner就是内部函数
    4 
    5         print(x)  #条件二 引用外部环境的一个变量
    6 
    7     return inner  #结论:内部函数inner就是一个闭包
    8 
    9 outer(20)()  #调用outer时会返回inner

     补充:

     1 name = "老王"
     2 def foo():
     3     name = "xiaoming"
     4     def bar():
     5         name = "xiaowang"
     6         print(name)
     7         def tt():
     8             global name
     9             print(name)
    10         return tt
    11     return bar
    12 age1 = foo() #调用foo函数得到返回值bar,拿到bar的内存地址   foo()
    13 age2 = age1() #调用bar函数,打印"xiaowang",得到返回值tt,并拿到tt的内存地址   foo()()
    14 age3 = age2() #调用tt函数,将声明的全局变量打印出来   foo()()()
    15 foo()()()
  • 相关阅读:
    tomcat并发个题-未解决
    tengine安装
    nginx获得自定义参数
    nginx限流
    树形背包——hdu1561
    树形dp专题
    单调队列——P1725 琪露诺
    单调队列,dp——POJ
    记忆化搜索——HDU
    区间dp——POJ
  • 原文地址:https://www.cnblogs.com/songzhixue/p/9250480.html
Copyright © 2020-2023  润新知