`
dacoolbaby
  • 浏览: 1266057 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Python 闭包

阅读更多

所谓闭包,有2中定义。

 

1.子函数可以使用父函数中的变量

2.一个变量引用者未释放的可执行的代码块。

 

对第1点先举例:

 

def line_conf():
    def line(x):
        return 2*x+1
    print(line(5))   # within the scope


line_conf()
print(line(5))       # out of the scope

#NameError: name 'line' is not defined

 

 

第2点举例:

def line_conf():
    def line(x):
        return 2*x+1
    return line       # return a function object

my_line = line_conf()
print(my_line(5))

 

对于闭包用于处理一些非常特殊的问题。

比如说,我的函数返回一个带有变量的方程。在Java,c++这种语言就很难实现了。

尤其是java里面,函数返回的,只能是一个结果,这个结果必须是一个对象或者是一个值。

 

通过闭包,这个问题就很好地解决了。

 

一个函数和它的环境变量合在一起,就构成了一个闭包(closure)。在Python中,所谓的闭包是一个包含有环境变量取值的函数对象。环境变量取值被保存在函数对象的__closure__属性中。比如下面的代码:

def line_conf():
    b = 15
    def line(x):
        return 2*x+b
    return line       # return a function object

b = 5
my_line = line_conf()
print(my_line.__closure__)
print(my_line.__closure__[0].cell_contents)

 __closure__里包含了一个元组(tuple)。这个元组中的每个元素是cell类型的对象。我们看到第一个cell包含的就是整数15,也就是我们创建闭包时的环境变量b的取值

 

一个实际中的闭包case:

def line_conf(a, b):
    def line(x):
        return a*x + b
    return line

line1 = line_conf(1, 1)
line2 = line_conf(4, 5)
print(line1(5), line2(5))

 

 

ref:作者:Vamei 出处:http://www.cnblogs.com/vamei 

http://www.cnblogs.com/vamei/archive/2012/12/15/2772451.html

 

 

 

 

 

分享到:
评论

相关推荐

    Python闭包实例closure.py

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

    Python闭包:深入理解与应用场景解析.zip

    Python闭包是编程语言中的一种高级特性,它在函数式编程和面向对象编程中都扮演着重要的角色。在Python中,闭包是指一个内嵌函数(nested function)对其外部作用域变量的引用,即使外部函数已经执行完毕,闭包依然...

    对Python闭包与延迟绑定的方法详解

    Python闭包可能会在面试或者是工作中经常碰到,而提到Python的延迟绑定,肯定就离不开闭包的理解,今天总结下 关于闭包的概念以及一个延迟绑定的面试题。 Python闭包 1、什么是闭包,闭包必须满足以下3个条件: 必须...

    Python 闭包,函数分隔作用域,nonlocal声明非局部变量操作示例

    本文实例讲述了Python 闭包,函数分隔作用域,nonlocal声明非局部变量操作。分享给大家供大家参考,具体如下: 实例对象也可以实现闭包的功能,不过实例对象消耗的资源(内存)比闭包多。 demo.py(闭包): # 闭包,...

    Python闭包实现计数器的方法

    本篇文章将深入探讨如何利用Python闭包来实现一个简单的计数器,并解释闭包的基本概念和相关技巧。 首先,我们要理解闭包的核心特征:一个函数内部定义了另一个函数,并且内部函数引用了外部函数的局部变量。当外部...

    python闭包与引用以及需要注意的陷阱

    Python 闭包是一种重要的编程概念,它涉及到函数和其引用环境的组合。在 Python 中,闭包通常由嵌套函数创建,当外部函数返回内部函数时,内部函数还能访问外部函数的作用域,尤其是那些在外部函数中定义但在内部...

    Python闭包开发

    ### Python闭包开发知识点 #### 一、理解Python闭包 在Python中,闭包(Closure)是一种特殊类型的函数,它能够记住并访问其定义时所在的作用域中的变量,即使在其定义时的作用域已经关闭。这实际上就是说,闭包...

    python高阶闭包练习题

    在Python的世界里,"高阶闭包"是一个高级概念,对于理解函数的内部工作原理和实现更复杂的编程逻辑至关重要。本练习题旨在帮助你深入理解和掌握Python中的高阶闭包。 首先,让我们澄清一下什么是闭包。闭包是Python...

    Python闭包函数定义与用法分析

    在Python编程中,闭包(closure)是一个非常重要的概念,它是函数式编程的一个重要特性,允许一个函数访问并操作函数外部的变量。闭包在很多语言中都有应用,比如Python、JavaScript等。 闭包函数的定义:在Python...

    python闭包.html

    什么是闭包?如何设置闭包?创建闭包可以用来干什么?闭包的好处,如何正确使用闭包?通过闭包能创建一些只有当前函数能访问的变量,

    python闭包深入(csdn)————程序.pdf

    Python中的闭包是一种重要的编程概念,它涉及到代码块、局部变量、全局变量和自由变量等基本概念。在Python中,代码块包括模块、函数体和类定义等。局部变量是在特定代码块中定义并绑定的变量,全局变量则在模块级别...

    基于Python闭包及其作用域详解

    关于Python作用域的知识在python作用域有相应的笔记,这个笔记是关于Python闭包及其作用域的详细的笔记 如果在一个内部函数里,对一个外部作用域(但不是全局作用域)的变量进行引用,那么内部函数就被称为闭包...

    17-18-Python闭包函数+生成器+装饰器及原理

    在Python的世界里,闭包、生成器和装饰器是三个非常重要的概念,它们对于编写高效、灵活的代码至关重要。 首先,我们来详细解释一下闭包。闭包是在Python中函数的一种特性,它是指有权访问另一个函数作用域中的变量...

    wistbean#fxxkpython#Python 闭包1

    闭包可以让使用者访问到函数内部的数据,也就是可以拿到在闭包内所提供的隐藏数据。如果某个功能只需要一个函数,可以使用闭包而不需另创建一个类。第一次将参数传入并 保

    python 闭包和装饰器(csdn)————程序.pdf

    Python中的闭包和装饰器是两种非常重要的编程概念,它们在函数式编程和面向对象编程中都有着广泛的应用。本文将详细解析这两个概念及其在实际编程中的应用。 首先,我们来看闭包。闭包是由函数嵌套和作用域规则定义...

    Python 闭包的使用方法

    以下是关于Python闭包的详细说明: 1. **嵌套函数与非局部变量**: 在Python中,一个函数可以定义在另一个函数内部,这样的函数被称为嵌套函数。嵌套函数可以访问外部(包围)函数的变量,这些变量称为非局部变量...

Global site tag (gtag.js) - Google Analytics