打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Python中变量的作用域

一、变量作用域的含义

变量的作用域说白了就是变量的值从哪里获取,或者说变量取值的地方

我们在写代码过程中会用到很多变量,这些变量会出现在各种代码块中,有的出现在函数块里,有的在函数块外,例如:

def n2: a = 1 b = 2 def n1: b = 3 print(b) print(a) n1n2结果:31

在这个例子中,对于变量a,b的值,是应该先识别函数中的还是先识别函数外的呢,其实python内部在识别变量的值得时候是有顺序的,不是胡乱读取的,python内部对于获取变量的值是规定了一个顺序的。

二、变量定义域顺序

LEGB原则

当你在代码里声明一个变量后,python会在LEGB四个作用域里搜索变量的值,它的搜索是有顺序的,第一步现在L也就是当前最里层局部作用域内找,如果没找到,第二步会跑到包含当前层的上一层作用域E里找,还没找到的话,第三部会去模块级的里面G里找,最后是去python里的固定模块里找。

三、在不同作用域修改变量的值

问题1.,既然对于变量的值的搜索有顺序,如果当前在全局里已经有变量a的值,我在局部域里想修改a的值,怎么修改呢?

问题2. 如果变量是在上一层的函数里有值,我想在当前层函数内修改,又如何操作呢?

问题1的解答:对于这种情况需要用到global,在重新给变量a赋值时,要先声明变量global a,

a = 1def n: global a print(a) a = 123 print(a)n结果:1123 问题2的解答:对于这种情况需要用到nonlocal,在重新给变量a赋值时,要先声明变量nonlocal a

def n1: a = 1 def n2: nonlocal a a = 2 print(a) n2 print(a)n1结果:22四、哪些情况适用变量的作用域对于模块,类,函数里出现的变量就要注意了,它们会引入新的作用域,在这里如果内部

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
python基础篇:什么是作用域?具体的作用是什么?
python global、locals()、nonlocal
初识 Python:全局、局部和非局部变量(带示例) | Linux 中国
【2020Python修炼记 】Python语法入门--名称空间
Python的命名空间
Python基础【函数】
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服