[TimLinux] Python nonlocal和global的作用

Posted TimLinux

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[TimLinux] Python nonlocal和global的作用相关的知识,希望对你有一定的参考价值。

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的作用的主要内容,如果未能解决你的问题,请参考以下文章

[TimLinux] Python 函数

[TimLinux] Python学习内容框架

[TimLinux] Python 装饰器

[TimLinux] python-ldap 介绍

[TimLinux] Python Django myblog启动

[TimLinux] Python 初学者必看