局部变量:在函数内部申明的变量,只能在函数内部调用,超过使用范围就会报错。
全局变量:就是在整个python文件中申明的变量,可以在全局使用。
正常情况下:
# 什么是全局变量和局部变量?
a = 100
def sum_num(num):
total = a + num
print('局部变量打印:')
print('num:{};total:{}'.format(num, total))
print('全局变量打印:')
print('a:{}'.format(a))
sum_num(10)
print('全局变量打印:')
print('a:{}'.format(a))
-----------
输出:
局部变量打印:
num:10;total:110
全局变量打印:
a:100
全局变量打印:
a:100
局部变量超出使用范围报错示例:
在局部,如果局部变量和全局变量名相同,优先使用局部变量
b = 100
def show_num():
b = 20
print('b的值:', b)
show_num()
----------
输出:
b的值: 20
正常情况下,全局变量可以在局部进行查看(print),但是不能用于修改
全局变量可以在局部查看:
b = 100
def show_num():
print(b)
show_num()
--------
输出:
100
全局变量不可以直接在局部修改(报错):
b = 100
def show_num():
b += 20
show_num()
--------
输出:
UnboundLocalError: local variable 'b' referenced before assignment
如果想在局部使用全局变量,需要通过global
b = 100
def show_num():
global b
b += 20
show_num()
print('全局变量b:', b)
-------------
输出:
全局变量b: 120
a = 100
def sum_num(num):
global total
total = a + num
print('局部变量打印:')
print('num:{};total:{}'.format(num, total))
sum_num(10)
print('打印global后的局部变量')
print('total:{}'.format(total))
--------
输出:
局部变量打印:
num:10;total:110
打印global后的局部变量
total:110
重要:在函数中定义的局部变量想要全局调用时,只有不可变参数需要加global!!!
什么是不可变参数?什么是可变参数?