Python 作用域, 局部与全局变量

全局与局部变量

  • 在子程序(函数)中定义的变量称为局部变量, 在程序的一开始定义的变量称为全局变量
  • 全局变量作用于整个程序, 局部变量作用域是定义该变量的子程序
  • 当全局变量与局部变量重名时:
    • 在定义局部变量的子程序内, 局部变量起作用,在其它地方全局变量起作用
 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)
原文地址:https://www.cnblogs.com/cheese320/p/8892701.html