今天我们要说的是:变量的作用域
什么是作用域呢?
作用域就是某一个事件或者物体在某种情况下产生的特定的作用或效果(画外音:能不能说人话?)
好吧,那常老师来举个例子(不举栗子了,太累)
比如你,你是谁?
这个问题问的太TM好了,好吧,你先来试图回答一下你是谁?
可能有很多答案,没错,你只要能列举出两个以上不同的合理答案,就说明你已经理解并掌握作用域的概念了
常老师来举几个例子:
1.我在我父母面前我就是儿子
2.我在我爷爷面前我就是孙子
3.我在我侄子面前我就是叔叔
4.我在我弟弟的孩子面前,我就是TA大爷!(哈哈哈吼)
5.我在老师面前我就是学生
6.我在我学生面前我就是老师
最后,我就是我(这点很重要)
OK了,不知道大家通过这个例子是否看到了一个道理,那就是,同一个人,在不同的环境,面对不同的人,他的角色是不同的。
不同的角色规定了这个角色的权限,也就是作用,如果我叫我爷爷孙子,那肯定是要挨揍的。
这就是作用域的理解,那么变量的作用域,就是变量在不同环境下所表达的角色(当然是不同的)
好了,如果你理解了变量作用域的概念,那么下面那就让我们来看看,在Python中,变量的作用域有几种呢?
1.局部作用域(Local)
局部作用域是作用在一个函数、方法等内部,局部作用域作用范围最小
2.闭包(Enclosing)
闭包表示变量在本函数外的函数中的变量作用域
3.全局作用域(Global)
全局作用域一般是定义在函数体之外的,这里的变量通常对全局有效
4.内建作用域(Building-in)
内建作用域的作用就是Python语言内建的函数范围,比如我们使用一个print(),一个if()等等,都属于内建作用域的范围
那么,这四个作用域的大小范围是怎么样的呢?
一般来说,当我们使用一个变量,他将会按照以下的范围查找:
局部作用域(Local)-->闭包(Enclosing)-->全局作用域(Global)-->内建作用域(Building-in)
为什么呢?因为越是小范围的变量越精确,也就是说作用域越小的变量,使用起来将会越准确
(这与我们人类的语言使用习惯有关)
这四个作用域中,最常用的就是局部作用域、全局作用域和内建作用域,闭包在简单的程序设计中基本不常用,只有在复杂的程序设计中或者封装中才会使用。
下面,我分别对内奸作用域、局部作用域和全局作用域进行说明:
如果我们进行一个非常简单的输出变量,这里的x就是内建作用域
我们可以看到,上面的代码中有两个num,一个在函数体外,一个在函数体内,后面两个输出语句实际上都是输出num,在不同的作用域下,num的值是不同的。
值得注意的是:在Python中,只有引用了模块(Module)、类(Class)、函数(Def及Lambda)时才会引入新的作用域,使用其他模块的时候是不会引入新的作用域的,这点很重要。
学完作用域这个知识点之后,第一次接触的小伙伴可能会感觉程序设计很复杂,甚至有种不敢下手写代码的感觉,其实不然,作用域的最简单本质就是:可以让程序设计者重复使用某一个变量名在不同的地方,只要记住这一条,在写代码的时候稍加注意,就不会引起不必要的麻烦。
好了,新年第一天,希望大家元气满满的开始接受新的知识。
如有问题,可以随时给我留言,我会一一解答,谢谢!
-------------------------------------------------
本文来自企鹅号 - 全球大搜罗媒体
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文来自企鹅号 - 全球大搜罗媒体
如有侵权,请联系 cloudcommunity@tencent.com 删除。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有