zoukankan      html  css  js  c++  java
  • 闭包突破作用域

     1 '''
     2 概念:在函数体内定义的内部函数,并且该内部函数使用的外部函数的变量,
     3 外部函数将内部函数作为返回值返回,该内部函数就叫做闭包。
     4 
     5 优点:避免变量污染全局环境,我们可以在全局范围内间接使用局部变量。
     6 缺点:数据会长期驻留在内存中,造成内存浪费,在IE浏览器中,极易崩溃,
     7 所以请慎重使用。
     8 '''
     9 # 闭包 : 在函数内部定义一个函数,并且外部函数返回内部函数的函数名,
    10 # 该方式可以称之为闭包。
    11 # 一个返回函数的函数----闭包
    12 def outer():
    13     print("outer执行了")
    14     def inner():
    15         print("inner执行了")
    16     return inner
    17 
    18 res = outer()   # res == outer() == inner
    19 res()
    20 # 整合写法
    21 outer()()
    22 
    23 def outer():
    24     print("123")
    25     def inner():
    26         print(456)
    27         return "heihei"
    28     # 实际返回的是:内部函数的返回值
    29     return inner()
    30 res = outer()
    31 print(res)
    32 
    33 #
    34 globalA = 100 # 全局
    35 def closer():
    36     eB = 200  # 闭包作用域
    37     def inner():
    38         iC = 300   # 局部
    39         return iC
    40     return inner
    41 
    42 res = closer()   # res === inner
    43 a = res()            # res()  ==== inner()
    44 print(a)
    45 
    46 
    47 
    48 #
    49 def outer():
    50     num = 666
    51     def inner():
    52         nonlocal num
    53         num += 1
    54         return num
    55     return inner
    56 res = outer()   # res == inner
    57 a = res()
    58 print(a)  # 667
    59 b = res()
    60 print(b)  # 668
    61 print(res())   # 669
    62 
    63 print(outer()())   # 667
    64 print(outer()())   # 667
    65 print(outer()())   # 667
    66 
    67 # for i in range(3):   # i=0   1
    68 #     num = 2
    69 #     for j in range(3):  # j=0  1  2
    70 #         num += 1
    71 #         print(num)  # 3  4  5
    72 #     print(num)  # 5
  • 相关阅读:
    2018 dnc .NET Core、.NET开发的大型网站列表、各大公司.NET职位精选,C#王者归来
    下载docker镜像报错,dial tcp x.x.x.x:443: connect: connection refused
    SpringMVC
    MyBatis操作数据库——增删改查
    MyBatis——Mapper配置并查询数据
    MyBatis工程搭建
    测试IOC&DI
    SpringAOP测试
    Spring连接Mysql
    Spring 工程搭建
  • 原文地址:https://www.cnblogs.com/BKY88888888/p/11266127.html
Copyright © 2011-2022 走看看