zoukankan      html  css  js  c++  java
  • 闭包

    一、闭包的定义

    1,闭包是嵌套在函数中的
    2,闭包是内层函数对外层函数的变量(非全局变量)的引用(改变)
    def func1():
    '''
    此函数满足前两个条件,但还不是闭包
    :return:
    '''
    name = '太白'
    def func2():
    print(name)
    3, 闭包需要将其作为一个对象返回,而且必须逐层返回直至最外层函数的返回值

    二、闭包举例

    # 这是闭包
    def wrapper():
        name = '太白'
        def inner():
            print(name)
        return inner
    
    # 这也是闭包
    def wrapper(name):
        def inner():
            print(name)
        return inner
    n1 = 'wusir'
    wrapper(n1)
    
    # 这不是闭包
    name = 'alex'
    def wrapper():
        def inner():
            print(name)
        return inner

    三、闭包的作用

    # 非闭包函数 随着函数的结束临时空间关闭
    def func1(s1):
        n = 1
        n += s1
        print(n)
    
    func1(5)
    func1(5)
    func1(5)
    func1(5)

    # 闭包函数
    def wrapper(s1):
        n = 1
        def inner():
            nonlocal n
            n += s1
            print(n)
        return inner
    
    ret = wrapper(5)
    ret()
    ret()
    ret()
    ret()

    闭包的机制:python遇到闭包,产生一个空间,这个空间不会随着函数的结束而消失。
  • 相关阅读:
    @@IDENTITY 存储过程
    ASP.NET的Cookie和Session
    数据格式设置表达式
    DataTable类(MSDN)
    用静态变量代替appliction
    C cgi url 编码解码问题
    C#视频头操作
    c#网页抓取
    c语言字符串分隔
    CGI c 上传文件
  • 原文地址:https://www.cnblogs.com/wangkaiok/p/9906654.html
Copyright © 2011-2022 走看看