微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

浅谈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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐