第7章 Python函数-7-变量作用域_第1页
第7章 Python函数-7-变量作用域_第2页
第7章 Python函数-7-变量作用域_第3页
第7章 Python函数-7-变量作用域_第4页
第7章 Python函数-7-变量作用域_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论