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

[TimLinux] Python nonlocal和global的作用

时间:2018-06-17 17:53:41      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:未使用   ssi   sign   glob   span   var   bsp   oba   pytho   

1. 执行代码

以下实例都是通过执行以下代码,需要把以下执行代码放在后面实例代码的后面。

a = outer_func()
print("call a()") a() a() a() b
= outer_func()
print("call b()") b() b() b()

2. 未使用nonlocal

def outer_func():
    count = 3
    def inner_func():
        count += 1
        print("count", count)
    return inner_func

#output>>>
#    count += 1
#UnboundLocalError: local variable ‘count‘ referenced before assignment

3. 使用nonlocal

def outer_func():
    count = 3
    def inner_func():
        nonlocal count
        count += 1
        print("count", count)
    return inner_func

# output>>>
# call a()
# count 4
# count 5
# count 6

# call b()
# count 4
# count 5
# count 6

4. 使用global (出错)

def outer_func():
    count = 3
    def inner_func():
        global count
        count += 1
        print("count", count)
    return inner_func

# output>>>
#     count += 1
# NameError: name ‘count‘ is not defined

 

5. 使用global (成功)

count = 3
def outer_func():
    def inner_func():
        global count
        count += 1
        print("count", count)
    return inner_func

# output>>>
# call a()
# count 4
# count 5
# count 6

# call b()
# count 7
# count 8
# count 9

 

[TimLinux] Python nonlocal和global的作用

标签:未使用   ssi   sign   glob   span   var   bsp   oba   pytho   

原文地址:https://www.cnblogs.com/timlinux/p/9193222.html

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