一.变量作用域
- 函数外部是全局变量;函数内部是局部变量。
- 函数体外部引用局部变量,是不能引用的;函数体内部的局部变量,不能改变全局变量。
- 在函数体内部,局部变量是不分层级的,不能形成块级作用域,可以互相引用
- 函数内部可以引用全局变量, 函数外部不能引用局部变量
c = 1 # 全局变量
def add(x,y):
c = x +y # 局部变量
print(c)
add(4,5)
#局部变量的修改不会改变全局变量
print(c)
二.作用域链
作用域,有链式特性,逐级向上寻找
for循环不构成作用域
# 作用域,有链式特性,逐级向上
c = 1
def func1():
# c = 2
def func2()
# c = 3
print(c)
func2()
func1()
- for循环不构成作用域
-
全局变量,不止可以在模块内使用,在整个程序中都可以引用全局变量
-
函数内的局部变量可以覆盖全局变量,但只能在函数内用,不能在函数外使用
三.global关键字
global关键字能让局部变量在函数外部使用
要点:global后要有变量名、使用时要先调用函数
def func():
global a
a = 2
func() # 调用局部变量需要先实现函数
print(a) # 函数外部可调用局部变量