《Python语言程序设计》 —3.4 变量的作用域

举报
华章计算机 发表于 2019/11/18 21:06:54 2019/11/18
【摘要】 本节书摘来自华章计算机《Python语言程序设计》一书中第3章,第3.4.1节,作者是王恺 王志 李涛 朱洪文。

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没有定义。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。