码迷,mamicode.com
首页 > 其他好文 > 详细

函数里面的global 和 nonlocal 关键字的使用

时间:2018-09-21 19:51:30      阅读:205      评论:0      收藏:0      [点我收藏+]

标签:ble   bsp   运行   作用   全局   assign   作用域   for   使用   

"""
global和nonlocal关键字:
当修改全局变量时,使用global关键字声明;
当修改嵌套作用域(enclosing作用域,外层非全局作用域)时,使用nonlocal关键字声明;
"""
#修改全局变量时,使用global关键字声明;
a=10
def f():   
    global a  # global修改全局变量,先声明
    a=20
    print(a)   
    def f1():
        a=30
        print(a)
    f1()
    print(a)
print(a)
f()
"""
10
20
30
20
"""
#修改嵌套作用域(enclosing作用域,外层非全局作用域)时,使用nonlocal关键字声明;
a=10
def f():   
   
    a=20 #这个 a 是嵌套作用域(enclosing作用域,外层非全局作用域)
      
    def f1():
        nonlocal a
        a=30
        print(a)
    f1()
    print(a)
print(a)
f()

"""
下面这段代码运行时会报错,因为test函数中的a是局部变量,未被定义;
UnboundLocalError: local variable ‘a‘ referenced before assignment
"""
a=10
def test():
    a=a+1
    print(a)
test()   

#如下:把全局变量a传入函数test里,可正常执行
a=10
def test(a):
    a=a+1
    print(a)
test(a)   

函数里面的global 和 nonlocal 关键字的使用

标签:ble   bsp   运行   作用   全局   assign   作用域   for   使用   

原文地址:https://www.cnblogs.com/zpdbkshangshanluoshuo/p/9688052.html

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