《Python语言程序设计》 —3.4 变量的作用域
3.4 变量的作用域
变量的作用域是指变量的作用范围,即定义一个变量后,在哪些地方可以使用这个变量。按照作用域的不同,Python中的变量可分为局部变量和全局变量,下面分别介绍。
3.4.1 局部变量
在一个函数中定义的变量就是局部变量(包括形参),其作用域是从定义局部变量的位置至函数结束的位置。下面通过一个例子说明局部变量的作用域,参见代码清单3-22。
代码清单3-22 局部变量示例
1 def LocalVar1(x): #定义函数LocalVar1,形参x是局部变量
2 print('LocalVar1中x的值为',x) #输出x
3 x=100 #将x的值修改为100
4 print('LocalVar1中x修改后的值为',x) #输出x
5 #print('LocalVar1中y的值为',y) #取消注释后,该行代***错
6 y=20 #定义局部变量y,将其赋值为20
7 print('LocalVar1中y的值为',y) #输出y
8 def LocalVar2(): #定义函数LocalVar2
9 x=10 #定义局部变量x,将其赋值为10
10 print('LocalVar2中调用LocalVar1前x的值为',x) #输出x
11 LocalVar1(15) #调用LocalVar1函数
12 print('LocalVar2中调用LocalVar1后x的值为',x) #输出x
13 #print('LocalVar2中y的值为',y) #取消注释后,该行代***错
14 LocalVar2() #调用LocalVar2函数
程序执行结束后,将在屏幕上输出如下结果:
LocalVar2中调用LocalVar1前x的值为 10
LocalVar1中x的值为 15
LocalVar1中x修改后的值为 100
LocalVar1中y的值为 20
LocalVar2中调用LocalVar1后x的值为 10
从输出结果中可以看到:
在LocalVar1和LocalVar2中都有名为x的局部变量。在LocalVar1函数中将x的值先赋为15,再改为100;但在LocalVar2中调用LocalVar1函数后,x的值仍然为10,即在LocalVar1中对x所做的修改不会影响LocalVar2中x的值。在不同的函数中,可以定义相同名字的变量,二者不会冲突,虽然同名但代表不同的变量,所以可以存储不同的数据。
在LocalVar1中定义的变量y也是局部变量,其作用域是从定义y的位置到LocalVar1函数结束的位置。如果取消代码清单3-22中第5行代码前面的注释,则系统会给出报错信息“UnboundLocalError: local variable 'y' referenced before assignment”,即在给局部变量y赋值前使用了y;如果取消第13行代码前面的注释,则系统会给出报错信息“NameError: name 'y' is not defined”,即y没有定义。
- 点赞
- 收藏
- 关注作者
评论(0)