Python中的闭包

 更新时间:2021年11月01日 16:35:10   作者:一碗周  
这篇文章主要介绍了Python中的闭包,闭包在函数中提出的概念,简单来说就是一个函数定义中引用了函数外定义的变量,并且该函数可以在其定义环境外被执行。这样的一个函数我们称之为闭包,下面我们一起来看看文章内容的具体介绍

1、闭包概念

闭包在函数中提出的概念,简单来说就是一个函数定义中引用了函数外定义的变量,并且该函数可以在其定义环境外被执行。这样的一个函数我们称之为闭包。实际上闭包可以看做一种更加广义的函数概念。因为其已经不再是传统意义上定义的函数。

闭包这个概念不仅仅只有在Python中存在,在任何一个编程语言中都几乎存在。

2、闭包条件

闭包的条件:

  • 外部函数中定义了内部函数
  • 外部函数是有返回值
  • 返回值是:内部函数
  • 内部函数还引用了外部函数的变量

格式如下所示:

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

示例代码:

def func():
    a = 100

    def inner_func():
        b = 200
        print(a, b)

    return inner_func


x = func()
print(x)  # <function func.<locals>.inner_func at 0x0000021704CD9620>
x()  # 100 200
# 这样就可以直接调用inner_func函数,如果return不返回一个内部函数的话是不会有任何输出的

3、闭包完成计数效果

使用闭包还可以完成计数器的效果

def generate_count():
    container = [0]

    def add_one():
        container[0] += 1
        print(f"这是第{container[0]}次调用")

    return add_one


count = generate_count()
count()  # 这是第1次调用
count()  # 这是第2次调用
count()  # 这是第3次调用

4、闭包的缺点及作用

闭包的缺点如下所示:

  • 作用域没有那么直观
  • 因为变量不会被垃圾回收所以有一定的内存占用问题。

闭包的作用如下所示:

  • 可以使用同级的作用域
  • 读取其他元素的内部变量
  • 延长作用域

到此这篇关于Python中的闭包的文章就介绍到这了,更多相关Python闭包内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python排序算法之堆排序算法

    Python排序算法之堆排序算法

    堆排序看字面意思是一种排序方法,那堆是什么呢?堆是一个近似完全二叉树的结构,并同时满足堆积的性质。其实堆排序是指利用堆这种数据结构所设计的一种排序算法。
    2023-01-01
  • Python中常用的os操作汇总

    Python中常用的os操作汇总

    这篇文章主要汇总了Python中常用的os操作,帮助大家更好的理解和学习python,感兴趣的朋友可以了解下
    2020-11-11
  • Python爬虫获取AliExpress商品详情的详细步骤

    Python爬虫获取AliExpress商品详情的详细步骤

    速卖通(AliExpress)是全球知名的在线零售平台,隶属于阿里巴巴集团,下面给大家介绍如何使用Python进行这一操作的详细步骤,感谢的朋友一起看看吧
    2024-12-12
  • Python requests的SSL证书验证方式

    Python requests的SSL证书验证方式

    这篇文章主要介绍了Python-requests的SSL证书验证方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02
  • python正则表达式面试题解答

    python正则表达式面试题解答

    这篇文章主要为大家分析了python正则表达式常见面试题,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • 使用Matplotlib创建漂亮的数据可视化图表

    使用Matplotlib创建漂亮的数据可视化图表

    在 Python 中,Matplotlib 是一个强大而灵活的工具,可以用来创建各种类型的数据可视化图表,本文给大家介绍了如何使用Matplotlib创建漂亮的数据可视化图表,文中有详细的代码示例供大家参考,需要的朋友可以参考下
    2024-04-04
  • Python中selenium_webdriver下拉框操作指南

    Python中selenium_webdriver下拉框操作指南

    selenium 虽然过了这么多年,但是到目前为止依然是比较流行的自动化框架了,下面这篇文章主要给大家介绍了关于Python中selenium_webdriver下拉框操作的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-01-01
  • python实现修改xml文件内容

    python实现修改xml文件内容

    这篇文章主要介绍了python实现修改xml文件内容,XML 指可扩展标记语言,是一种标记语言,是从标准通用标记语言(SGML)中简化修改出来的
    2022-07-07
  • Python实现自动批量修改文件名称

    Python实现自动批量修改文件名称

    这篇文章主要为大家详细介绍了如何基于Python语言,实现按照一定命名规则批量修改多个文件的文件名的效果,文中的示例代讲解详细,感兴趣的可以了解一下
    2023-01-01
  • Python引入多个模块及包的概念过程解析

    Python引入多个模块及包的概念过程解析

    这篇文章主要介绍了Python引入多个模块及包的概念过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09

最新评论