Python之全局变量与局部变量

全局变量:

  特点:

    在全局作用域中产生

    一般用大写字母表示

    在局部作用域中用global关键字时声明

NAME='John'
def change_name():
    NAME='July'
change_name()
print(NAME) #'July'
#在函数局部作用域中找不到变量时,会向上一级作用域找,直到全局作用域

  global关键字:

name='John'
def test():
    name='July' #局部变量name
    def foo():
        global name #用global声明name是全局变量
        print('from foo:%s' %name)
    print('from test:%s' %name)
    foo()
test()
#-----------------------
'from test:July' #在test中,打印的是局部变量name
'from foo:John' #在foo中,打印的是全局变量name

  注意:局部作用域中的全局变量不可在声明之前使用,否则程序报错。

  在局部作用域中可对列表、集合等可变类型数据进行修改:

l=[1,2,3,4]
def foo():
    l.pop()
foo()
print(l)
#---------------
[1, 2, 3]

 

局部变量:

  特点:

    在局部作用域产生

    仅限于该局部作用域或其下级作用域中引用

name='July'

def name()
    name='John'

print(name)
#'July'

上一级变量:

  特点:

    用nonlocal关键字进行声明,若上一级作用域没有找到该变量则报错。

def te():
    name="aa"
    def test():
        nonlocal name  #nonlocal关键字声明上一级变量
        name='changed'  #对上一级变量进行赋值
    test()
    print(name)
#'changed'

 

posted @ 2018-09-06 13:16  恋853雨  阅读(795)  评论(0编辑  收藏  举报