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'