赞
赏
我们在 Python 中定义一个 变量 时,这个变量是有作用范围的,变量的作用范围被称为它的作用域。换句话说,变量的作用域指的是程序代码能够访问该变量的区域,如果超过该区域,将无法访问该变量。
Python 中,根据定义变量的位置(有效范围),可以将变量分为局部变量和全局变量。
局部变量是指在 函数 内部定义并使用的变量,它只在函数内部有效。每个函数在执行时,系统都会为该函数分配一块 “临时内存空间”,所有的局部变量都被保存在这块临时内存空间内。
当函数执行完成后,这块内存空间就被释放了,这些局部变量也就失效了,因此离开函数之后就不能再访问局部变量了,否则解释器会抛出 NameError 错误。
和局部变量相对应,全局变量指的是能作用于函数内部和外部的变量,即全局变量既可以在各个函数的外部使用,也可以在各函数内部使用。
def func():
info = "HaiCoder"
...
这里的 info 变量,是定义在函数内部的,因此 info 变量就是局部变量。
info = "HaiCoder"
def func():
pass
这里的 info 变量,是定义在函数外部的,因此 info 变量就是全局变量。
def func():
global info
info = "HaiCoder"
这里的 info 变量,虽然定义在函数内部的,但是,我们使用了 global 修饰了该变量,因此这里的 info 变量也是全局变量。
Python 局部变量,只能用在函数中
print("嗨客网(www.haicoder.net)")
# Python局部变量,只能用在函数中
def print_info():
info = "HaiCoder"
print("In Func ", info)
print_info()
print("Not in func", info)
程序运行后,控制台输出如下:
我们定义了一个 print_info 函数,并且在该函数里定义了一个局部变量 info,接着,我们在函数内部打印该变量,可以正常打印。
我们在函数外部,打印函数内部的局部变量 info,程序报错,即,函数内部的局部变量不可以在函数外部访问。
Python全局变量,可以用在函数内部和外部
print("嗨客网(www.haicoder.net)")
# Python全部变量,可以用在函数内部和外部
info = "HaiCoder"
def print_info():
print("In Func ", info)
print_info()
print("Not in func", info)
程序运行后,控制台输出如下:
我们定义了一个函数外部的全局变量 info,接着,我们分别在 print_info 函数内部和函数外部访问该全局变量,都可以正常打印。即,函数外部的全局变量可以在函数外部和内部正常访问。
Python 可以在函数内部定义全局变量
print("嗨客网(www.haicoder.net)")
# Python可以在函数内部定义全局变量
def print_info():
global info
info = "HaiCoder"
print("In Func ", info)
print_info()
print("Not in func", info)
程序运行后,控制台输出如下:
我们在 print_info 函数内部,使用 global 关键字 定义了一个全局变量 info,接着,我们分别在 print_info 函数内部和函数外部访问该全局变量,都可以正常打印。
即,函数内部的使用 global 声明的全局变量可以在函数外部和内部正常访问。
我们在 Python 中定义一个变量时,这个变量是有作用范围的,变量的作用范围被称为它的作用域。换句话说,变量的作用域指的是程序代码能够访问该变量的区域,如果超过该区域,将无法访问该变量。
Python 中,根据定义变量的位置(有效范围),可以将变量分为局部变量和全局变量。