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

python3 闭包(一)

时间:2018-08-23 02:06:30      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:span   没有   外部   print   条件   return   作用   color   pytho   

# python 中的闭包

n = 10 #定义全局作用域变量


def fn(): #形成闭包
    n = 100 #定义局部变量n

    def inner():
        nonlocal n
        n += 1 #这里定义相同变量n无法调用上层作用中的变量,这里区别于Javascript中当前作用域中如果没有对应变量则会
               #则会想上层作用域查找变量,python3中则不会查找
               # python3 中新增nonlocal 关键字可以调用上层作用域中的变量
        print(n)

    inner()
    return inner #返回内嵌函数的地址,从而形成闭包
    #形成闭包的条件
    #1、必须要有一个内嵌函数
    #2、内嵌函数中要对自由变量的引用
    #3、外部函数必须返回内嵌函数


t = fn()
t()
t()
print(n)

 

python3 闭包(一)

标签:span   没有   外部   print   条件   return   作用   color   pytho   

原文地址:https://www.cnblogs.com/alplf123/p/9521331.html

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