文章目录
- 1. python中的局部变量
- 2. python中的全局变量
- 3. 显式声明全局变量
1. python中的局部变量
函数内部定义的变量,是局部变量。局部变量只在当前函数中有效。
各个函数之间的局部变量是互相独立,互不影响的。
首先看一段代码:
def fun_local1():x=10print(x)
def fun_local2():print(x)fun_local1()
fun_local2()
可以预测一下,真正运行之后fun_local2()
应该是会报错,显示x
没有定义
Traceback (most recent call last):File "e:/MyselfCode/ShellMad/Python/fistpy.py", line 8, in <module> fun_local2()File "e:/MyselfCode/ShellMad/Python/fistpy.py", line 5, in fun_local2print(x)
NameError: name 'x' is not defined
果然如此。
2. python中的全局变量
定义在函数外部的变量,是全局变量。全局变量可以各个函数共享使用。
global_value = 100def fun_local1():print(global_value)
def fun_local2():print(global_value)fun_local1()
fun_local2()
运行结果,均为100
3. 显式声明全局变量
因为python是弱类型的语言,因此有时候可能会出现无法区分局部变量和全局变量的情况。
举例,以下代码,想将全局变量的值,改为50(但是不会成功)。
global_value = 100def fun_local1():global_value=50 #不会修改全局变量,是定义了一个局部变量print(global_value) #函数内部,优先使用局部变量
def fun_local2():print(global_value)fun_local1()
fun_local2()
我们应该使用global
关键字来显式告诉python,我们使用的是局部变量。
gloabal<变量名> #显式告诉python,这是一个全局变量
对上面的代码进行修改,得到如下:
global_value = 100def fun_local1():global global_valueglobal_value=50print(global_value)
def fun_local2():print(global_value)fun_local1()
fun_local2()
可以看到运行结果均为50
,实现对全局变量的值进行修改
50
50
总结:以后在函数内部使用全局变量,务必使用global语句,显式声明一下,防止全局变量被局部变量覆盖
4.学习视频地址:局部变量与全局变量