信息技术:94Python变量作用域(全局变量和局部变量).docx

上传人:太** 文档编号:35975953 上传时间:2022-08-24 格式:DOCX 页数:7 大小:18.54KB
返回 下载 相关 举报
信息技术:94Python变量作用域(全局变量和局部变量).docx_第1页
第1页 / 共7页
信息技术:94Python变量作用域(全局变量和局部变量).docx_第2页
第2页 / 共7页
点击查看更多>>
资源描述

《信息技术:94Python变量作用域(全局变量和局部变量).docx》由会员分享,可在线阅读,更多相关《信息技术:94Python变量作用域(全局变量和局部变量).docx(7页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、Python变量作用域(全局变量和局部变量)所谓作用域(Scope ),就是变量的有效范围,就是变量可以在哪个范围以内使用。有些变 量可以在整段代码的任意位置使用,有些变量只能在函数内部使用,有些变量只能在for循 环内部使用。变量的作用域由变量的定义位置决定,在不同位置定义的变量,它的作用域是不一样的。本 节我们只讲解两种变量,局部变量和全局变量。Python局部变量在函数内部定义的变量,它的作用域也仅限于函数内部,出了函数就不能使用了,我们将这 样的变量称为局部变量(Local Variable )。要知道,当函数被执行时,Python会为其分配一块临时的存储空间,所有在函数内部定义 的变

2、量,都会存储在这块空间中。而在函数执行完毕后,这块临时存储空间随即会被释放并 回收,该空间中存储的变量自然也就无法再被使用。举个例子:1. def demo():2. add = print(函数内部 add =,add)3. demo()4. print(函数外部 add =,add)程序执行结果为:函数内部 add = Traceback (most recent call last):File “C:UsersmengmaDesktopfile.py line 6, in print(函数外部 add =fadd)NameError: name add is not defined可以看

3、到,如果试图在函数外部访问其内部定义的变量,Python解释器会报NameError 错误,并提示我们没有定义要访问的变量,这也证实了当函数执行完毕后,其内部定义的变 量会被销毁并回收。值得一提的是,函数的参数也属于局部变量,只能在函数内部使用。例如:1. def demo(name,add):2. print(函数内部 name name)print(函数内部 add =,add)3. demo(Python 教程J :/4. print(函数夕卜部 name =,name)print(“函数外部 add =,add)程序执行结果为:函数内部name = Python教程函数内部 add =

4、 Traceback (most recent call last):File C:UsersmengmaDesktopfile.py, line 7, in print(函数夕卜部 name =,name)NameError: name name is not defined由于Python解释器是逐行运行程序代码,由此这里仅提示给我name没有定义,实际上在函数外部访问add变量也会报同样的错误。Python全局变量除了在函数内部定义变量,Python还允许在所有函数的外部定义变量,这样的变量称为全 局变量(Global Variable ) o和局部变量不同,全局变量的默认作用域是整个程

5、序,即全局变量既可以在各个函数的外部 使用,也可以在各函数内部使用。定义全局变量的方式有以下2种:在函数体外定义的变量,一定是全局变量,例如:1. add = . text():2. print。函数体内访问add)text()3. print(函数体外访问:,add)运行结果为:函数体内访问:函数体外访问: :变为全局变量。例如:4. def text():5. global addadd= 6. print(函数体内访问:add)text()7. print(函数体外访问:add)运行结果为:函数体内访问:函数体外访问:注意,在使用global关键字修饰变量名时,不能直接给变量赋初值,否那

6、么会引发语法错误。获取指定作用域范围中的变量在一些特定场景中,我们可能需要获取某个作用域内(全局范围内或者局部范围内)所有的变量,Python提供了以下3种方式:1) globals。函数globals()函数为Python的内置函数,它可以返回一个包含全局范围内所有变量的字典, 该字典中的每个键值对,键为变量名,值为该变量的值。举个例子:1.#全局变量2.2.Pyname = Python 教程”Pyadd = 3. def text():4. #局部变量Shename = shell 教程”5. Sheadd= print(globals()程序执行结果为: z Pyname: Pytho

7、n 教程丁Pyadd: y/ .注意,globals()函数返回的字典中,会默认包含有很多变量,这些都是Python主程序内置的,读者暂时不用理会它们。可以看到,通过调用globalsO函数,我们可以得到一个包含所有全局变量的字典。并且, 通过该字典,我们还可以访问指定变量,甚至如果需要,还可以修改它的值。例如,在上面程序的基础上,添加如下语句:1. printfglobalsOtPyname)globalsOIPyname = Python 入门教程2. print(Pyname)程序执行结果为:Python教程Python入门教程2) locals。函数locals()函数也是Python

8、内置函数之一,通过调用该函数,我们可以得到一个包含当前作用域内所有变量的字典。这里所谓的当前作用域指的是,在函数内部调用localsQ函数,会获得包含所有局部变量的字典;而在全局范文内调用localsQ函数,其功能和globalsQ函数相同。举个例子:1. #全局变量Pyname = Python 教程”2. Pyadd = def text():3. #局部变量Shename = shell 教程”4. Sheadd= print(函数内部的 locals:)5. print(locals()text()6. print(函数外部的 locals:)print(locals()程序执行结果为

9、:函数内部的locals:Sheadd: y/ Shename: shell 教程函数外部的locals:,Pyname: Python 教程丁Pyadd: : 回的字典中会默认包含有很多变量,这些都是Python主程序内置的,读 者暂时不用理会它们。注意,当使用localsQ函数获得所有局部变量组成的字典时,可以向globalsQ函数那样,通过指定键访问对应的变量值,但无法对变量值做修改。例如:1. #全局变量Pyname = Python 教程”2. Pyadd = def text():3. #局部变量Shename = shell 教程”4. Sheadd= print(locals(

10、)Shename)5. locals()Shename = shell 入门教程print(Shename)6. text()程序执行结果为:shell教程shell教程显然,locals。返回的局部变量组成的字典,可以用来访问变量,但无法修改变量的值。3) vars(object)vars()函数也是Python内置函数,其功能是返回一个指定object对象范围内所有变量组成的字典。如果不传入object参数,vars()和localsQ的作用完全相同。由于目前读者还未学习Python类和对象,因此初学者可先跳过该函数的学习,等学完Python类和对象之后,再回过头来学习该函数。举个例子:1. #全局变量Pyname = Python 教程”2. Pyadd = class Demo:3. name = Python 教程”add = 4. print(“有 object:)print(vars(Demo)5. print(“无 object:)6. print(vars()程序执行结果为:有 object :/name: Python 教程add: ;无 object:z Pyname: Python 教程丁Pyadd: :

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 解决方案

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁