zoukankan      html  css  js  c++  java
  • 浅谈Python 中的闭包

    闭包定义

    百度中搜索闭包,百度百科给长的定义 闭包就是能够读取其他函数内部变量的函数。从定义中可以看出,要形成闭包,至少要有2个函数,且其中一个函数能够读取另一函数的内部变量。

    Python 闭包函数的一般形式

    
    def out(argv1,...):
     """
     功能块
     """
     def inner(argv,...):
             """
             功能块
             """
     return inner
    

    在内部函数inner 中可以调用外部函数out的局部变量。
    从这个形式中,可以看出装饰器就是一种闭包函数。

    Python 闭包函数的特点

    • 调用闭包函数,其返回值类型为函数,返回值为内部函数
    • 闭包中外部函数定义的局部变量在函数执行后,暂不释放,留置给内部函数

    Python 闭包函数的缺点

    闭包中的局部变量不释放,将会占用内存空间,闭包过多会占用大量内存空间,严重可能会导致内存溢出。

    Python 闭包函数的应用

    • python 闭包的一个典型应用就是装饰器
    • 由于闭包中的局部变量不释放,可以在闭包中添加 类对象, 类对象不释放, 可以用于编写单例模式

    Python 闭包函数典型应用代码

    下面的代码 为 robotframework 中robotlibcore.py 中的一段代码,https://github.com/robotframework/PythonLibCore
    在此代码中,采用闭包实现装饰功能。

    
    def keyword(name=None, tags=()):
        if callable(name):
            return keyword()(name)
        def decorator(func):
            func.robot_name = name
            func.robot_tags = tags
            return func
        return decorator
    
    
  • 相关阅读:
    [LUOGU] 1364 医院设置
    [POJ] 3278 Catch That Cow
    [OpenJudge] 2727 仙岛寻药
    [POJ] 2386 Lake Counting
    [POJ]1118 Lining up
    [LUOGU]1141 01迷宫
    [POJ]1111 Image Perimeters
    python之路——初识函数
    python----------文件操作
    Python中的split()函数的用法
  • 原文地址:https://www.cnblogs.com/Finding-bugs/p/14453328.html
Copyright © 2011-2022 走看看