python中全局变量和局部变量作用域理解
一:描述
python中全局变量和局部变量作用域理解
二:回答
1. 局部变量不能修改全局变量
局部变量只作用于方法内,无法修改全局变量
1 #全局变量city 2 city = "上海" 3 4 def mod_city(): 5 #局部变量city 6 city = "深圳" 7 print(city) 8 9 print(city) 10 mod_city() 11 print(city) 12 13 >>> 运行结果如下: 14 >>> 上海 15 >>> 深圳 16 >>> 上海
这里第9行和第11行都会打印上海,因为mod_city函数外部的city是全局变量,全局变量不会被函数内部的city即局部变量修改。
说明:如果这里mod_city有返回值,返回了city的值,然后在第10行用city接收返回值,即city = mod_city(),这样最后打印出来的也会是深圳,即外面的全局变量被赋值修改了
2. 局部变量加上关键词global可以变成全局变量
1 #全局变量city 2 city = "上海" 3 4 def mod_city(): 5 #局部变量city加了关键词global,就变成了全局变量 6 #全局变量就可以修改外部的city值 7 global city 8 city = "深圳" 9 print(city) 10 11 print(city) 12 mod_city() 13 print(city) 14 15 >>> 程序执行结果如下: 16 >>> 上海 17 >>> 深圳 18 >>> 深圳
上面函数内的city本来是一个局部变量,但是因为加了关键字global,city就变成了全局变量,它就可以修改外面的全局变量city的值
所以打印当调用mod_city方法后,city变量的值被改变,在函数外部打印city,打印出来的也会是深圳
3. 扩展
1 count = 0 2 def add(num): 3 global count 4 count += num 5 return count 6 7 add(10) 8 add(20) 9 add(30) 10 print(count) 11 12 >>> 程序运行结果如下: 13 >>> 60
add(10):此时num为10,count为全局变量为0+10=10
add(20):此时num为20,count为全局变量为10+20=30
add(30):此时num为30,count为全局变量为30+30=60