




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
7.7 变量作用域作用域Python中,程序的变量并不是在哪个位置都可以访问的,访问权限决定于这个变量是在哪里赋值的。变量的作用域决定了在哪一部分程序可以访问哪个特定的变量名称。Python的作用域一共有4种,分别是:L(Local)局部作用域E(Enclosing)闭包函数外的函数中G(Global)全局作用域B(Built-in)内建作用域Python中变量是采用L–>E–>G–>B的规则查找,即Python检索变量的时候,即:在局部找不到,便会去局部外的局部找(例如闭包),再找不到就会去全局找,再者去内建中找。7.7 变量作用域局部变量变量的作用域是Python学习中一个必须理解掌握的环节,下面我们从局部变量和全局变量开始全面解析。局部变量指的是:定义在函数内的变量,也就是定义在def函数内的变量名,只能在函数内使用,它与函数外具有同名的其它变量没有任何关系。在不同的函数内,可以定义名字相同的局部变量,它们之间不会相互影响。示例代码如下:defword1():
words="goodluck"
print("word1中的words值为%s"%words)
defword2():
words="bestwish"
print("word2中的words值为%s"%words)
word1()
word2()
7.7 变量作用域代码运行结果如下:图7-18运行结果局部变量7.7 变量作用域全局变量全局变量是定义在函数外的变量,它拥有全局作用域。局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。我们通过一个示例,来对比全局变量和局部变量的不同。例7-10全局变量和局部变量#小明今年21岁,他的妈妈比他大20岁。
age=21#全局变量
defgetAge(age):
age=age+20#局部变量
print("小明妈妈的age的为",age)
returnage
#调用getAge函数
getAge(age)
print("小明的age的为",age)
7.7 变量作用域代码运行结果,如图7-19所示全局变量图7-19运行结果7.7 变量作用域global和nonlocal关键字根据前面小节所学,内部作用域的变量是不会影响到外部作用域的变量。那如果想让内部作用域的变量去修改外部作用域的变量呢?这个时候就需要用到global和nonlocal关键字。接下来,分别对这两个关键字进行详细讲解。(1)global关键字global关键字用来在函数或其它局部作用域中使用全局变量。接下来,先看一段代码:
city="长沙"
defshowCity():
city+="湖南"
print("城市:"+city)
#主程序
showCity()
7.7 变量作用域global和nonlocal关键字程序运行,控制台输出报错信息,如图7-20所示。
图7-20报错7.7 变量作用域global和nonlocal关键字上述代码报错的原因是“变量city没有在使用前定义”。我们在最前面明明是可以在函数中访问全局变量的呀?为什么这里会报错。原因在于Python与其它语言不同。Python中如果在函数内部对全局变量city进行修改,Python会把变量city当做是局部变量,而在进行修改之前,我们是没有声明city这个局部变量的,因此,程序执行时会出现上述报错。找到了原因,如何来解决呢?这时为了使全局变量生效,我们可以在函数内使用global关键字进行声明。下面就是修改后的代码,如下所示:
city="长沙"
defshowCity():globalcity
city+="湖南"
print("城市:"+city)
#主程序
showCity()
7.7 变量作用域global和nonlocal关键字程序运行,控制台输出结果,如图7-21所示。图7-12运行结果图此时,程序得以正确运行,并且对全局变量city进行了修改。7.7 变量作用域global和nonlocal关键字(2)nonlocal关键字nonlocal关键字是在Python3.0中新增的关键字。通过使用nonlocal关键字可以在一个嵌套的函数中修改嵌套作用域中的变量。接下来,示例如下:deffunc():
count=1
deffunc_in():
count=12
func_in()
print(count)
func()
程序运行结果,输出为1。7.7 变量作用域global和nonlocal关键字上面的程序上,在嵌套的func_in函数中,对变量count赋值,同样会创建一个新的变量,而非使用count=1语句中的count;如果要修改嵌套作用域中的count使其值变化,就可以使用nonlocal关键字。示例代码如下:
deffunc():
count=1
deffunc_in():
nonlocalcount
count=12
func_in()
print(count)
func()
7.7 变量作用域global和nonlocal关键字程序运行结果,输出为12。上述代码中,在func_in()函数中使用了nonlocal关键字,Python在func函数中使用嵌套作用域中的变量count,因
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025至2030年中国PP-R环保健康饮水管数据监测研究报告
- 2025年中国钢筋混凝土单扇防护密闭门市场调查研究报告
- 2025年中国转子铜排滚挤机市场调查研究报告
- 第七章第三节-乙酸乙酯制备实验的改进设计 教学设计 2023-2024学年高一下学期化学人教版(2019)必修第二册
- 人教版七年级历史与社会下册7.1.1规则之源教学设计
- 第二单元第二节水分子的变化教学设计-2023-2024学年九年级化学鲁教版上册
- 2024-2025学年新教材高中地理课时素养评价十三交通运输与区域发展含解析鲁教版必修第二册
- 2024-2025学年高中数学第三章函数的应用3.2.1几类不同增长的函数模型课时作业含解析新人教A版必修1
- 2024-2025学年新教材高中历史第二单元三国两晋南北朝的民族交融与隋唐统一多民族封建国家的发展第8课三国至隋唐的文化课后课时作业新人教版必修中外历史纲要上
- 第4课 《3 积极防病》(教学设计)-2023-2024学年四年级下册综合实践活动安徽大学版
- 高压氧科工作总结高压氧科个人年终总结.doc
- 电子电路基础习题解答
- 《政治学概论》教学大纲
- 食品生物化学习题谢达平(动态)
- 保安员工入职登记表
- 断路器控制回路超详细讲解
- 签证户口本完整翻译模板
- 睿达RDCAM激光雕刻切割软件V5.0操作说明书
- 变电设备运行与维护培训课件(共102页).ppt
- 机械设计基础平面连杆机构课件
- 寒假学习计划表-
评论
0/150
提交评论