Python-全局变量和局部变量

什么是全局变量和局部变量?

局部变量:在函数内部申明的变量,只能在函数内部调用,超过使用范围就会报错。

全局变量:就是在整个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

局部变量超出使用范围报错示例: 

Python-全局变量和局部变量_第1张图片

局部变量和全局变量使用优先级

在局部,如果局部变量和全局变量名相同,优先使用局部变量

b = 100
def show_num():
    b = 20
    print('b的值:', b)

show_num()

----------
输出:
b的值: 20

global-全局变量在局部修改

正常情况下,全局变量可以在局部进行查看(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

global-局部变量的全局使用

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

重要:在函数中定义的局部变量想要全局调用时,只有不可变参数需要加global!!!

什么是不可变参数?什么是可变参数?

你可能感兴趣的:(Python,python)