`

Python Closure

 
阅读更多

原创转载请注明出处:http://agilestyle.iteye.com/blog/2330379

 

先实现一个可变参数的求和——直接反回求和的结果

def calc_sum(*args):
    s = 0
    for n in args:
        s = s + n
    return s


# 15
print(calc_sum(1, 2, 3, 4, 5))

 

改进一下,如果不需要立刻求和,后面根据需要再进行计算求和——返回求和的函数

def lazy_sum(*args):
    def total():
        s = 0
        for n in args:
            s = s + n
        return s

    return total


f = lazy_sum(1, 2, 3, 4, 5)
print(f)
# 15
print(f())

f1 = lazy_sum(1, 2, 3, 4, 5)
f2 = lazy_sum(1, 2, 3, 4, 5)
print(f1)
print(f2)
# False
print(f1 == f2)

Console Output



Note:

内部函数total可以引用外部函数lazy_sum的参数和局部变量,这种就称为闭包(Closure)

 

 

 

 

 

  • 大小: 11.8 KB
分享到:
评论

相关推荐

    Python closure闭包解释及其注意点详解

    在Python编程语言中,闭包(closure)是一种常见的概念,它涉及到函数和作用域,经常会在代码中扮演重要角色。理解闭包及其相关注意事项,对于编写高效、正确的Python代码来说至关重要。本文档详细解释了闭包的概念...

    Python闭包实例closure.py

    Python闭包实例closure.py 简单示例闭包的使用 简单示例闭包的使用

    Closure Linter完整安装包

    1. **Python 2.7.3**: Closure Linter依赖于Python 2.7版本,因为它是用Python编写的。这个".msi"文件是Windows操作系统上的Python安装程序,用户需要先安装这个版本的Python才能继续安装和运行Closure Linter。安装...

    python decorator & closure demo code for learning the use tips

    python decorator & closure demo code for learning the use tips

    closure闭包

    在编程语言理论中,"closure"一词通常指的是“闭包”,它是一个非常重要的概念,尤其是在函数式编程和动态类型语言中。闭包是函数和与其相关的引用环境(即变量的值)的组合,这个组合使得函数能够记住它被定义时的...

    Python 八股文.pdf

    10. **闭包(Closure)**:闭包是内嵌函数的一种形式,其中内部函数引用了外部函数的局部变量,即使外部函数执行结束,这些变量仍然被内部函数保留。闭包可以用来创建持久化的局部变量,常用于函数工厂、数据封装和...

    python学习-07-closure-deco.zip

    Python是一种解释型的、面向对象的、带有动态语义的高级程序设计语言。它是由荷兰人吉多·罗萨姆于1989年发布的,第一个公开发行版发行于1991年。Python注重解决问题的方法,而不是语法和结构。它被广泛应用于各个...

    Python库 | closure-20180204-py3-none-any.whl

    资源分类:Python库 所属语言:Python 资源全名:closure-20180204-py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    python中函数常见坑

    在Python编程语言中,函数是组织代码的基本单元,它们提供了重用性和模块化的特性。然而,初学者在使用函数时可能会遇到一些常见的“坑”,这些陷阱往往与局部变量作用域和迭代器的使用有关。本篇文章将深入探讨这两...

    ABAQUS复合材料Python语言例题

    2. VCCT(Virtual Crack Closure Technique):这是一种常用的裂纹扩展模拟方法,适用于预测复合材料的裂纹行为。在Python中,可以编写脚本来定义裂纹路径、裂纹尖端的边界条件以及裂纹扩展准则。 3. COHESIVE...

    Python-Python受LISP启发的函数式编程思想

    Python语言在设计之初受到了LISP(List Processing)语言的显著影响,这在它的函数式编程特性上体现得尤为明显。LISP是一种早期的高级编程语言,以其简洁的语法和强大的函数式编程能力著称。在Python中,我们也能...

    python文档

    8. **函数式编程**:Python支持函数式编程风格,如高阶函数(higher-order function)、闭包(closure)和装饰器(decorator)。`map()`、`filter()`和`reduce()`等函数是函数式编程的典型应用。 9. **文件操作**:...

    Python-dillPython的扩展序列化反序列化模块

    Python的dill模块是Python标准库pickle模块的一个扩展,提供了更强大的序列化和反序列化功能。pickle模块主要用于将Python对象转化为字节流(序列化),以便存储或通过网络传输,然后可以恢复这些对象(反序列化)。...

    Python Interview

    ### Python语言特性详解 #### 1. Python的函数参数传递 在Python中,函数参数的传递遵循一种称为“传引用的值”的模型。这意味着当我们将一个变量作为参数传递给函数时,实际上传递的是该变量所指向对象的一个引用...

    LR(0)语法分析器的实现代码(python) - 简书1

    2. 如果项目A→α•Bβ在CLOSURE(I)中,对于B的所有产生式B→γ,将B→•γ也加入CLOSURE(I)。 3. 重复上述两步,直到CLOSURE(I)不再改变。 接下来,我们看Python实现的代码片段。`get_CLOSURE`函数用于计算闭包。...

    Python+核心编程2.rar

    7. **高级特性**:例如装饰器(decorator)、上下文管理器(context manager)、生成器(generator)、闭包(closure)、函数式编程等,这些是Python进阶学习的重点。 8. **文件与I/O操作**:学习如何打开、读写...

    python3.7.4中文文档.7z

    8. **高级特性**:如生成器(generator)、装饰器(decorator)、上下文管理器(context manager)、闭包(closure)等,这些都是Python编程中非常重要的高级特性。 9. **文件和I/O操作**:如何读写文件,包括文本...

    python3-cookbook电子书+书中源码

    - **闭包(Closure)**:Python中的闭包是一种特殊的函数,它可以记住其定义时的环境,即使外部作用域的变量已经不再存在。 - **装饰器(Decorator)**:装饰器允许我们在不修改原始函数代码的情况下,添加新的...

Global site tag (gtag.js) - Google Analytics