码迷,mamicode.com
首页 > 编程语言 > 详细

Python闭包

时间:2016-01-27 17:28:19      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:闭包


闭包的定义:

闭包(Closure)是词法闭包(Lexical Closure)的简称,是引用了自由变量的函数。这个被引用的自由变量将和这个函数一同存在,即使已经离开了创造它的环境也不例外。所以,闭包是由函数和与其相关的引用环境组合而成的实体


#! /usr/bin/env python

def closuretesting():
    b = 15
    c = 20
    print ‘b id %x‘% id(b)
    print ‘c id %x‘% id(c)
    def line(x):
        return 2*x + b + c
    return line

testline=closuretesting()
print(testline.__closure__)    # 这个属性中的值,你会发现正好为b 和 c  的ID ,因此可以得知,闭包是通过这个属性去记录类似于b,c这样的变量的
print(testline.__closure__[0].cell_contents)  # __closure__里包含了一个元组(tuple),这个元组中的每个元素是cell类型的对象
print(testline.__closure__[1].cell_contents)
print(testline(10))


output

b id 1026008
c id 1025f90
(<cell at 0x7f5efed66d38: int object at 0x1026008>, <cell at 0x7f5efed66d70: int object at 0x1025f90>)
15
20
55


闭包的判断:

(1)一个嵌套函数(函数里面的函数)

(2)嵌套函数用到封闭函数里定义的一个或多个值

(3)封闭函数的返回值是嵌套函数


参考文章:http://python.jobbole.com/82296/

本文出自 “诡迹” 博客,请务必保留此出处http://unixman.blog.51cto.com/10163040/1739260

Python闭包

标签:闭包

原文地址:http://unixman.blog.51cto.com/10163040/1739260

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!