chenchaoze

全局变量:

  特点:

    在全局作用域中产生

    一般用大写字母表示

    在局部作用域中用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\'

 

分类:

技术点:

相关文章: