全局与局部变量
- 在子程序(函数)中定义的变量称为局部变量, 在程序的一开始定义的变量称为全局变量
- 全局变量作用于整个程序, 局部变量作用域是定义该变量的子程序
- 当全局变量与局部变量重名时:
- 在定义局部变量的子程序内, 局部变量起作用,在其它地方全局变量起作用
1 # 字符串, 整数不能在函数里面直接改全局变量; 类,集合,列表,字典是可以在函数中直接改全局变量的(元组不可以,因为元组是不可以修改的). 2 school = 'oldboy' 3 term = 3 4 ages = ('18','20','30') 5 names=['lucy','ada','Rain'] 6 7 def change(): 8 school = 'edu' 9 term = 4 10 ages('18','80') #元组本来就是不可修改的 11 names[0] = 'alex' 12 print('inside func',names) 13 14 change() 15 print(school) 16 print(term) 17 print(ages) 18 print(names)
全局变量如果是字符串 / 整数, 若想在函数中修改, 需要在函数中变量前面加上global,然后再修改.
1 # 不允许的做法 2 def change_name(): 3 global name # global把name变成了一个全局变量, 如果有这个全局变量就把那个全局变量拿过来,没有就添加(但最好不要这么做.全局变量还是要在文件前面定义,方便调试) 4 name = 'alex' 5 print(name) 6 7 8 change_name() 9 print(name) 10 11 print(' ') 12 13 # 允许的做法 14 name = 'alex' 15 16 17 def change_name2(): 18 global name # 在函数中修改全局变量 19 name = 'lucy' 20 print(name) 21 22 23 change_name2() 24 print(name)