zoukankan      html  css  js  c++  java
  • 闭包

    1.闭包
    形成闭包的条件
    1.外部函数内定义了内部函数
    2.外部函数有返回值
    3.返回的是函数名
    4.内部函数引用了外部函数的变量

    格式:
    def 外部函数():
    ...
    def 内部函数():
    ...
    return 内部函数

    def func():
        a = 100
    
        def inner_func():
            b = 99
            print(a, b)
    
        return inner_func
    
    
    x = func()
    x()

     闭包传参

     1 def func(a, b):
     2     c = 10
     3 
     4     def inner_func():
     5         s = a+b+c
     6         print("相加后的结果:", s)
     7 
     8     return inner_func
     9 
    10 
    11 # 调用func
    12 ifunc = func(1, 2)   # ifunc = inner_func
    13 
    14 # 调用ifunc
    15 ifunc()

     2.闭包的作用

     1 def func(a, b):
     2     c = 10
     3 
     4     def inner_func():
     5         s = a+b+c
     6         print("相加后的结果:", s)
     7 
     8     return inner_func
     9 
    10 
    11 # 调用func
    12 ifunc = func(1, 2)   # ifunc = inner_func
    13 
    14 ifunc1 = func(3, 4)
    15 
    16 ifunc1()
    17 
    18 # 调用ifunc
    19 ifunc()

     每次调用func时候,inner_func都是创建一个新的内存空间,执行inner_func内的代码

    因此,每次的参数值都时被保存下来的

     

    3. 利用闭包创建计数器

     1 def generate_counter():
     2     container = [0]
     3 
     4     def add_one():
     5         container[0] = container[0] + 1
     6         print("当前是第{}次访问".format(container[0]))
     7     return add_one
     8 
     9 
    10 counter = generate_counter()
    11 counter()
    12 counter()
    13 counter()

     

  • 相关阅读:
    回顾2016,工作总结!
    上传base64格式的图片到服务器
    input输入提示历史记录
    input输入时软键盘回车显示搜索
    JS设置和读取Cookie
    正则表达式识别字符串中的URL
    X-Frame-Options配置
    pytest学习笔记
    测试理论基础总结
    redis杂七杂八
  • 原文地址:https://www.cnblogs.com/GumpYan/p/12271478.html
Copyright © 2011-2022 走看看