ad

打开《Python入门与实战》_一步步学会Python_4.6 变量的作用域

admin 152 2023-10-25

【摘要】 本书摘自《Python入门与实战》一书中第4章,第6节,由王跃进主编。

4.6 变量的作用域

Python 中,所有的变量名会都按照定义时的位置被保存在不同的区域中,这些区 域叫作命名空间或者作用域。作用域分为4种类型:局部作用域 (Local)、 嵌套作用域 (Enclosing)、全局作用域 (Global)、 内置作用域 (Built-in)。这4种作用域简称LEGB。 本节我们重点介绍局部作用域和全局作用域。

打开《Python入门与实战》_一步步学会Python_4.6 变量的作用域

在运行函数时,函数体中定义的所有变量将构成一个局部作用域,模块(一个 py 文件)中已经执行的赋值语句,将构成一个全局作用域。

在访问变量时,搜索路径遵循LEGB 顺序。这里的 LEGB 顺序是指从当前所处区 域开始依次搜索当前区域、上一级区域、 ……,级别的优先级从高到低依次为L、E、 G、B。 比如当前级别为 L, 则搜索顺序为 L、E、G、B; 如果当前级别为 E, 则搜索 顺序为 E、G、B。 一旦在某个作用域搜索到了变量则停止搜索,如果一直没有搜索到 变量则引发 “NameError”异常。

4.6.1 局部变量

局部作用域中的变量叫作局部变量,在函数内部定义的变量都是局部变量,只在 函数内部有效,在函数运行之前或在函数运行之后,这些变量都是不存在的。每个函 数具有自己的作用域,因此,即使两个函数中存在名字相同的变量,也不是同一个变量。

例子:访问函数内部的变量。

图4.1所示为局部变量范例。

Python 3.7.0 Shell

Eile Edit Shell Debug Options Window Help

局部变量范例

Traceback(most recent call last):

File"C:/Users/Administrator/AppData/Loca

1/Programs/Python/Python37-32/func.py",lin

e 5,in

NameError: name 'l name'is not defined

_

>>>

Ln:1720 Col: 6

4.6.2 全局变量

全局作用域中的变量叫作全局变量。在函数外定义的变量是全局变量,在函数内 也可以访问全局变量。

例子:访问全局变量。

01 g name ='全局变量范例'

02 def fun test()

03 pr(gnme

04 fun test()

05 print(g name)

输出:

全局变量范例

全局变量范例

下面列举几个需要注意的例子,并总结经验。

1. 局部变量与全局变量同名

输出:

Python 教学系列

Python 入门与实战

结论:当局部变量与全局变量同名时,按照 LEGB 规则,在函数内首先搜索到局 部作用域里的变量,在函数外部首先搜索到全局作用域里的变量。

2. 在函数中修改全局变量

输出:

Python 教学系列

Python 教学系列

结论:如果需要在函数中修改全局变量,须使用 global关键字声明。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们 18664393530@aliyun.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:阅读《时空大数据与云平台 理论篇》_走进云的世界_4.1.3 时空大数据处理相关技术
下一篇:《零基础Python 从入门到精通》_让你学得轻松_16.4 UDP编程
相关文章

 发表评论

暂时没有评论,来抢沙发吧~

×