Python变量作用域

Python变量作用域教程

我们在 Python 中定义一个 变量 时,这个变量是有作用范围的,变量的作用范围被称为它的作用域。换句话说,变量的作用域指的是程序代码能够访问该变量的区域,如果超过该区域,将无法访问该变量。

Python 中,根据定义变量的位置(有效范围),可以将变量分为局部变量和全局变量。

Python局部变量

局部变量是指在 函数 内部定义并使用的变量,它只在函数内部有效。每个函数在执行时,系统都会为该函数分配一块 “临时内存空间”,所有的局部变量都被保存在这块临时内存空间内。

当函数执行完成后,这块内存空间就被释放了,这些局部变量也就失效了,因此离开函数之后就不能再访问局部变量了,否则解释器会抛出 NameError 错误。

Python全局变量

和局部变量相对应,全局变量指的是能作用于函数内部和外部的变量,即全局变量既可以在各个函数的外部使用,也可以在各函数内部使用。

Python局部变量定义详解

语法

def func(): info = "HaiCoder" ...

说明

这里的 info 变量,是定义在函数内部的,因此 info 变量就是局部变量。

Python全局变量定义详解

语法

info = "HaiCoder" def func(): pass

说明

这里的 info 变量,是定义在函数外部的,因此 info 变量就是全局变量。

Python全局变量定义详解

语法

def func(): global info info = "HaiCoder"

说明

这里的 info 变量,虽然定义在函数内部的,但是,我们使用了 global 修饰了该变量,因此这里的 info 变量也是全局变量。

案例

Python定义局部变量

Python 局部变量,只能用在函数中

print("嗨客网(www.haicoder.net)") # Python局部变量,只能用在函数中 def print_info(): info = "HaiCoder" print("In Func ", info) print_info() print("Not in func", info)

程序运行后,控制台输出如下:

34_python变量作用域.png

我们定义了一个 print_info 函数,并且在该函数里定义了一个局部变量 info,接着,我们在函数内部打印该变量,可以正常打印。

我们在函数外部,打印函数内部的局部变量 info,程序报错,即,函数内部的局部变量不可以在函数外部访问。

Python定义全局变量

Python全局变量,可以用在函数内部和外部

print("嗨客网(www.haicoder.net)") # Python全部变量,可以用在函数内部和外部 info = "HaiCoder" def print_info(): print("In Func ", info) print_info() print("Not in func", info)

程序运行后,控制台输出如下:

35_python变量作用域.png

我们定义了一个函数外部的全局变量 info,接着,我们分别在 print_info 函数内部和函数外部访问该全局变量,都可以正常打印。即,函数外部的全局变量可以在函数外部和内部正常访问。

Python定义全局变量

Python 可以在函数内部定义全局变量

print("嗨客网(www.haicoder.net)") # Python可以在函数内部定义全局变量 def print_info(): global info info = "HaiCoder" print("In Func ", info) print_info() print("Not in func", info)

程序运行后,控制台输出如下:

36_python变量作用域.png

我们在 print_info 函数内部,使用 global 关键字 定义了一个全局变量 info,接着,我们分别在 print_info 函数内部和函数外部访问该全局变量,都可以正常打印。

即,函数内部的使用 global 声明的全局变量可以在函数外部和内部正常访问。

Python变量作用域总结

我们在 Python 中定义一个变量时,这个变量是有作用范围的,变量的作用范围被称为它的作用域。换句话说,变量的作用域指的是程序代码能够访问该变量的区域,如果超过该区域,将无法访问该变量。

Python 中,根据定义变量的位置(有效范围),可以将变量分为局部变量和全局变量。