00:00
我们将在本章节当中记着继续为大家讲解关于函数的问题啊,我们在本章节主要为大家讲解的是什么呢?变量的作用域,嗯,来,我们新建一个文本文件,用来记录一下相关信息好不好?变量的作用域很多,说啥叫变量的作用域啊,是不是的作用域,所以我们先对于概念这块进行一个简单的介绍啊,所谓的变量作用域啊,变量作用域。就是变量的有效范围。变量作用域啊,这么写的不对啊,变量的作用域,作用就是起效啊,欲就是范围,所以变量作用域就是变量的有效范围,有效范围。有效范围,很多学们说那变量不是生命中哪个地方都可以用吗?其实不是啊,如果我们之前没有学函数,你这样说是没什么问题的,但是我们现在学了函数,那么环境就要分为什么?函数之内和函数之外,那也针对于函数内和函数外变量的作用域不同,我们将函数的变量分为两个级别的作用范围,哪两个级别呢?也就是说它的分类情况,一个叫做全局变量啊,全局变量。
01:07
一个叫做局部变量,全局变量,一个叫做局部变量。局部变量很多,说什么叫全局变量呢?很简单,它是在函数内外都有效啊,都有效的变量,那就是全局变量,也就是说这个变量函数里边,函数外边都可以用,那什么叫局部变量呢?呃,仅在函数内部啊,仅仅啊,或者叫仅仅在函数内部有效的变量。啊,就是我们的局部变量,这就是两个什么呀,两个变量作用于分类的一个定义啊,两个变量作用于分类的一个定义,那么我们给大家举一个现实中的例子来理解一下我们这个全局变量和局部变量好不好?其实在我们的医院经常会涉及到一种麻醉的手术,对不对?那大家知道这个手术麻醉吧,它也分为两种,是不是手术麻醉啊?
02:05
手术麻醉也分两种,哪两种呢?一个叫做全身麻醉,一个叫做什么呀?局部麻醉,我们一般叫局麻,是不是局部麻醉啊?那全身麻醉和局部麻醉有什么特征呢?就是全身,假如说我给你做的是全身麻醉,那就意味着这个麻药在你身上的任何位置都有效,对不对?那比如说我给你做了全我,我本来想拔个牙,我给你做了全身麻醉,我拿刀割你手,你会疼吗?也不会疼,因为麻药在手上也起作用嘛,是不是?那这个时候全身麻醉的这个麻药就相当于全聚变量,那什么叫局部变量呢?我还想拔牙,但是我只给你做口腔内的局部麻醉,那这个麻药在嘴里边肯定是有效的,是不是?但是我这个时候拿刀拉你胳膊,你疼不疼,胳膊肯定疼啊,因为这个麻药是不是跟出了嘴就没有用了,是不是,所以这就是什么呀,全身麻醉就相当于全局变量这种效果啊,全局变量的效果,然后局部麻醉就相当于什么呀,局部变量这个效果。
03:02
局部变量的一个效果就这么简单,所以我们现实中啊也有这种类似的分类,好了,那说了这么多,我们看一下到底该怎么样来创建全局变量,怎么样来该创建局变量好不好?好吧,我们新建一个文档文本啊,不是文本啊,一个是代码文件来进行操作一下,新建一个文件,MY下线,Code下线要零第十个文件,来我们来讲一下变量的作用域啊。变量的作用域。变量的作用域,首先先给大家声明一个全局变量行不行,声明一个全局变量这样说还不完全正确啊,不完全正确,但是我们可以现在这样理解啊,完全正确啊,但是这样理解现在是可以的啊,好,非常简单,首先呢,我们在这里边写上一个麻醉剂行不行?麻醉剂咱用的是什么麻醉剂呢?先来一个全身麻醉啊。
04:00
全身麻醉好麻醉剂,那你看现在这个整个液面就相当于什么呢?相当于我们的身体啊,我们的整个身体好不好,然后我在身体里边啊,打了一针全身麻醉是不是,然后呢,我们在这里边声明一个函数,一个函数也就是产生一个局部环境好不好,产生一个局部环境,那咱就叫它嘴巴行不行,那DF咱叫它mouse,貌似帽草鼠标吧。嘴,咱就叫他嘴巴行不行?我就不写英文单词了。然后那这个嘴就相当于一个局部环境了,是不是好,那我们在这里边你可以写任何的操作,没关系啊,我们要拔牙呀,是不是我们要拔牙。然后在嘴中拔,不是在嘴嘴巴里面啊,拔牙。好,搞定,这个函数就能写完了,那这样一来的话,OK,我们要考虑的是什么呢?我们现在既然生命的全是变量,就要考虑两个问题,第一,它在正常的环境中是否可以使用?看好了,正常的环境中。
05:10
是否可以使用?是否可以使用所谓的正常环境啊,就是指什么呀?就是指函数外啊,函数外部好吧,那能不能用呢?很简单,打印一下变量是不是就知道了,Print,我们的麻醉剂好,右键运行一遍,我们会发现麻醉剂生效了,因为我们在这个位置是不是可以打印出这个变量啊,也很正常嘛,你在函数外面定义的变量在函数外边当然可以访问了,是不是?所以由此我们得到的结论是可以什么呀,生效变量有效,是不是变量有效?好,来,我们再来看第二个,第二个是干什么事呢?我们要在局部环境中啊,局部环境中啊检测变量是否有效啊,检测变量是否有效啊,那可能说在局部环境中怎么检测呢?首先我们要确定一点,局部环境就是这个函数对不对,所以你想在局部环境中检测,至少得在这里边啊打印吧,是不是在函数中打印什么麻醉剂这个变量,它如果能打印出来,说明这个变量在函数里边,函数是不是都有用啊,是不是好了,没关系,我们打印一下。
06:21
好了,麻醉剂好,当然你如果直接运行它肯定不会出来的,因为嘴这个函数不调用是不是不会执行啊,所以我们在这里边调用嘴函数好不好,麻醉剂调用嘴函数,然后让嘴函数里边什么呀,尝试打一麻醉剂,看它是否能够输出,是不是右键运行一遍啊,我们会发现,哎,第一个这个报错了,哪个地方报错了,我们来看一下啊。19R报的错误麻啊,不是叫麻醉叫嘴啊,Sorry,写错了函数是不是叫嘴呀?好,右键运行一遍,我们会发现,哎呀有效看见了吗?第一个是哪呢?是我们这个。是我们这块的输出,这一块的输出,那为了给大家看的更清楚点,我在前面给大家什么呀,写点内容好不好,在什么呢?函数外部调用变量啊,调用变量啊麻醉剂,然后呢,里边这个咱就加上一个在函数内部吧,什么叫在函数内部啊在。
07:18
在函数内部调用变量麻醉剂。好,右键再一次运行,我们可以发现函数内外部调用可以正常输出,函数内部调用是不是也可以正常输出,全是码,最近是不是,这就说明了我们刚刚声明的这个变量,它其实就是一个全局变量,就函数里面,函数外表我都能用,这个没有问题吧,是不是?好它也是变量有效啊。变脸有效。所以我们就可以得出关于全局变量的一个特征啊,变量有效什么特征呢?好来,我们保存一下代码,然后回到文档这块来给大家写一下变量的作用域,首先在全局变量特点这块给大家介绍一下啊,全局变量它的相关特点是什么呢?首先啊,在函数外部可以正常访问,可以正常访问。
08:16
然后在函在函数内部是不是也可以啊,在函数内部也可以正常访问,这就是我们全局变量的一个特征行不行,然后呢,局部变量特征呢,我们还得再做一个实验,局部变量,局部变量它有什么特征呢?来返回我们的代码文件,然后将我们刚刚的这个全局变量的注释掉啊。注释掉之后呢,我们在下面再给他写一个局部变量的一个特征啊,首先呢,我们在这里边啊,局部变量。局部变量。整个页面依然当做我们的身体好不好,跟上面一样啊,相当于我们的身体这块啊,相当于我们的身体,然后干什么事都看好了,我不再。
09:01
身上做全身麻醉剂干什么事呢?我只在你的嘴里边定义这个函,定义一个变量是不是,所以是不是局部环境啊,是不是所以这里边是不是定义一个函数啊,定义一个函数,一个函数相当于局部环境啊,局部。环境,OK,没有问题,我们在这里边看好了定义我们的局部变量。全局变量就是在函数外部定义的啊,所以在这里写的我们局部变量就是在函数内部写的好,我们也叫麻醉剂行不行,麻醉剂好,但是我们写上这是局部麻醉剂好搞定,然后这里边儿干什么事呢?该输出就该输出,比如说我们在这里边局部环境中要还要输出的拔牙呀,是不是好,我们在嘴中拔牙呀,啊,在嘴巴中拔牙呀。嘴巴啊中拔牙好搞定,那也就是说我们现在麻醉剂定义完了是不是,然后接着来测试它在函数内和函数外的一个使用情况,首先呢,第一步我们依然在什么呢?函数外部调用变量啊。
10:08
查看,看看是否可以使用简单直接在里边的print就可以了,Print print,我们的麻醉剂好来右键运行程序会报错。这的麻醉剂没有定义好多说那是不是因为函数嘴没有调用过呀,不是,即使我在这里边调用过函数嘴,让它里边的代码真正的执行一遍,你下面麻醉剂依然打印不出来,看见了没有,是不是依然打印不出来,所以在这里边其实就是函数里边定义的变量啊,它出不到函数外边,所以我们可以知道,在这里边函数外部是不可以使用函数里面定义的局部变量的,所以是不可以访问啊。不可以访问,那我们在函数里边可不可以定义访问函数内部的局部变量呢?也就是说把上面这个注释调,我们再来看一下在这里边能不能调用行不行,那我们在这下面直接调用局部变量。
11:04
调用局部变量,其实这个很简单,我估计大家猜也能猜的出来,如果函数里边外边都不能用,那我们定义它干嘛,是不是,所以在这里边真实可以用的啊,我们在里边输出啊,在函数内部调用啊,在。在局部环境中。环境中要用变量我们的麻醉剂好,然后呢,逗号把麻醉剂和变量往这一放麻醉剂,然后右键运行一遍,当然他自己肯定不会出现的,因为函数本身是不是要调用啊,是不是,所以在函数内部调用变量的时候,变量然后呢查看是否可以使用。是否可以使用啊,可以使用,你必须得让函数运行一遍,所以我们在这边调用嘴是不行,好在右键运行一遍,等你大家会发现在局部环境中调用麻醉剂是不是出来了,局部麻醉剂是不是生效了,有效是不是在这儿了,是不是,而在函数的外部怎么调用都会报错啊,所以它在函数内部时可以访问的。
12:06
这样一来的话,关于什么呀,我们局部变量特征也就总结出来了,可以访问好,那局部变量有什么特征呢?首先局部变量在函数外部不可以访问。不可以访问,所以叫局部嘛,是不是第二个在函数内部是可以访问的,函数内部可以访问。可以访问,那这样一来的话,关于我们的全局变量和局部变量的一个什么呀,特征问题就算介绍完了,特征问题介绍完了,那我们在这里边介绍完全局变量和局部变量特征之后,要为大家讲解另外一个内容,什么内容呢?如何将一个局部变量提升为全局变量,也就是说时间可以转的。然后上面要讲的是将局部变量。提升为全局变量,也就说局部实际上可以转成全局的,但是需要一些其他的操作啊,好了,然后在这里边干什么事儿呢?这两个我们就不动了,新建一个文件好不好,右键新建第11个文件,MY4号线扣四四号线11文件。
13:16
好,然后在里边我们要给大家讲解的是将什么呢?局部变量提升为全局变量,好,将局部变量提升为全局变量,其实也并不是很麻烦的事情啊,首先DF我们定一个局部环境,比如说依然叫做嘴超上括号,然后在嘴里边定义麻醉剂啊,定义麻醉剂。定义局部贝麻醉剂啊。定义局部变量,我们的麻醉剂,麻醉剂好,然后呢,麻醉剂啊,等于我们就直接写成麻醉剂了啊,这次我因为要提升,所以我就不叫什么局部麻醉剂,就叫麻醉剂好吧,那么正常情况下,现在它肯定是个局部变量,对不对,然后在局部环境中调用啊,在局部环境中调用麻醉剂的变量,麻醉剂的变量那可不可以出现呢?Print上括号。
14:10
我们写上局部环境中掉用麻醉剂变量啊。好,叫做局部环境中调用变量。好,我们在里边逗号啊,对记一写能不能用呢?当然可以,局部变量在局部内是不是可以调用的是不是,所以我们在这里调用函数啊。在局部环境中啊,调用函数。叫做第一个吧,叫测试函数内部调用,这是肯定可以直接怼函数一调用,然后我们就可以看到麻醉剂是可以输出的,是不是局部环境中加有,那全局环境中可以吗?好了。第二步叫测试函数,测试函数不是叫测试函数啊,测试这个,呃,去叫外部环境调用吧,外部环境调用就我们在函数之外调用可以吗?麻醉剂。
15:03
你可以写下在函数外部调用啊,我给大家写一下字吧,在函数外部调用啊,在函数外部调用变量可以调用吗?以目前的情况来看啊,是肯定不行的,因为局部啊,是不是出不来啊,所以右键运行汇报错了。是不是会报错?是不是出不来全球环境告诉你找不着这个变量嘛?那如何将我们的局部变量进行一个变量作用域的提升呢?我们要做的非常简单,看好了,在你声明局部微量的前面,而且必须最,而且必须是第一句话啊,就是函数开始之后的第一句话,在里边提升局部变量为全局变量。怎么提升呢?Global gal啊,Gal global关键字空格麻醉剂就可以了。只要在你的函数前面写成这句话,就表示当前局部变量会因为格global声明变成全局变量,这个时候函数内部和函数外部都可以正常调用,看见了吗?这就是我们所谓的变量作用力的提升啊,变量作用提升,将局部变量提升为全基变量这种理解方式是可以的,但是这种说法还有待提高啊,为什么呢?来,我们来看另外一个问题,好不好提升?大家应该已经会了吧,是不是好提升完了之后我们看另外一个问题啊,我们来看什么问题呢?嗯,先这个,把这个记一下吧,好吧,呃,使用格global关键字啊,叫在函数内部,在函数内部使用g lob global关键字可以将局部变量。
16:41
提升为提升为全局变量啊好,然后看什么东西呢?看我们要思考的一个问题啊,我们之前讲的全局变量真的是一个完完整整的全局变量吗?所以我们下面要讲的是真正的全局变量的操作啊,真正的全局变量。
17:02
好,其实就跟格global关键字也是相关的,所以我们刚刚说格global关键字没有讲完嘛,是不是什么问题呢?好,来将我们的11文件进行一个前半部分的注释。好,然后呢。注释掉,然后干什么呢?重新写一个环境啊,咱重新再建一个文件吧,是不是,反正这个这张文件不少,再建一个吧,好了,麦小心扣四小线12。然后呢,在这里面啊,这个十少了个东西啊,没关系啊好,然后我们在这里边干什么事呢?在这里边看好了。使用我们变量作用于最开始那个定义一个,首先在这里边定义全局变量啊。定义全局变量。然后DEF啊,不是什么DEF直接麻醉剂啊,就等于啊,我们就说它全身麻醉剂是不是好,然后呢,在这下面定义局部环境,也就是一个函数啊,定义函数DF,我们写上一个嘴,它上括号冒号,然后在这里干什么事呢?啊在这里边我们输出一句话吧,Print,在嘴巴中拔牙啊在嘴巴中拔牙呀。
18:16
啊,嘴巴中拔牙好搞定,然后现在我们的操作。写到这里边儿来干什么事呢?看好啊,来看好,我们这次不在里边调用,因为大家知道啊,如果我在这里边调用这个麻醉剂。麻醉剂它肯定能输出对不对啊,你在外边垫用函数嘴啊。要用函数嘴来。调用函数嘴,调用函数嘴好,那么这个时候呢,他这个在嘴中拔牙,这个全身麻醉剂肯定会出现,对不对,但是看好了,这次我不做什么呢,我不做它的简单调用,而是要在这里面修改,你既然能传进来,我是不是应该可以改呀,是不是我们在里边看好了叫尝试。
19:00
修改全局变量。全局变量啊,我们刚刚不是说,我们刚刚不是说它是全局变量吗?是不是我们自以为这是完整的全局变量啊,但它并不是这样的,首先来看一下我尝试又该怎么改呢?那既然麻醉剂这个变量能进来,我自然可以重新赋值了,是不是?然后我将它改成什么呢?好,叫做呃叫做什么叫叫做呃长有长时间有效吧,长效麻醉剂行不行?长效麻醉剂。好,那我把它重新复制之后,然后下面再接着使用这个变量print块麻醉剂啊麻醉剂,很多人说这能用吗?这个时候能用,那用劲是不是常用麻醉剂很多,这这你变成这你进行了啥变化吗?没有,这个离我们的操作还有一点点距离,哪个距离呢?来看我们现在用的是重新赋值对不对,但是看好了,我下面要做的不是重新赋值,而是一个什么呢?简单的运算。
20:07
啊,简单的运算,为此呢,我们需要把上面这个麻醉剂改成一个可以运算的数值,比如说我写个99吧,因为咱还咱还没有学过什么呀,咱还没有学过这个字符串操作,所以我写了99,然后下面这个呢,我也不给他赋值写成99了啊,如果写赋值写一个什么88,那大家肯定知道他依然可以得到88嘛,是不是我在这里干什么事呢?看好了,妈最近。我让他麻醉剂加一个什么呢?加一个一。简单的说,我就是把麻醉剂这个全局变量是不是拿到了函数中加一,重新复制给麻醉剂,我们还能够正常得到100的值吗?来右键运行一遍。你可以发现程序报错了,而且报了的错误很奇怪啊,你看我了这句话,这句话的错误是他说look well,意思是局部变量,局部变量麻醉剂不能再定义之前使用,诶,这怎么回事呢?明明这个麻醉剂这个变量是可以拿进来的,是不是重新复制可以用啊,但为什么我进行加法运算就不可以用了呢?好了,我们反过来要看这个。
21:14
注意看好了这种方式定义的全局变量,如果只是用这种方式定义全局变量,它仅仅可以访问啊。叫仅仅可以进行访问操作。可以进行访问操作,不可以进行其他操作。其他操作,比如说我想修改呀,是不是我想重新复制,重新加一个值啊,这些都不能做。所以它实际上是一个不完整的全局变量,也就是说你只可以把它拿进来访问是没问题的,但是想在这里边把它拿进来修改,那么不好意思,程序一定会报错,因为程序会认为你在用局部变量进行操错,而且你又没有定义过这个局变量。所以这是我们Python这个版本当中这个局变量的一个特色啊,就是你只是在函数外部生命的一个局变量,它仅仅可以访问,但是不能修改。如果你希望你这个全局变量在函数内部,就是局部环境中拥有完全的可操作性,那么需要使用什么呢?全局化声明。
22:20
全球化声明啊,全球化声明,怎么全球化声明呢?还是global啊,接BA global麻醉剂,这样就可以操作了,也是我们会得到100的值。看见了吗?100的值,也就是说这样一来的话,如果我们在前面加了格global关键字,声明了麻醉剂这个变量,就相当于告诉函数,你注意,如果你要用这个变量,一定是要上函数外边来找它修改,而不是说把它当做局变量来处理,明白了吗?所以我们真正的全局变量往回找,必须有一个前提条件,什么是条条前提条件呢?叫做使用global关键资金声明。
23:01
使用g lo BL关键字关键字声明,所以这里边我们可以看出格布关键字实际上有两个功能的,什么功能呢?第一个功能就我们刚刚写的,它可以把一个局部变量直接提升为全局变量,第二个作用,它可以把全局变量以一个完整的格式带到局部环境中操作,如果没有格罗卜关键字的话,那么全局变量只能在函数中访问,而不可以进行修改操作。大家能理解这一块吗?真正的全局变量就是使用global啊,使用。使用G变global关键字对全局变量啊进行声明,才可以在函数内部任意操作。否则,千万记住否则。我们在函数内部只能访问而不能修改。
24:02
这个大家能理解了吗?也就是说你正常情况下在函数外的生命的一个变量,它是一个不完整的全区变量,你要想在函数利用,必须用格global卜关字告诉函数一声,才可以真正的修改和操作,否则的话你只能访问啊,不能做其他操作了。好了,那这样来的话,关于我们函数变量的作用域就为大家介绍完了,介绍完了这个之后呢,为大家额外的补充一个内容啊,这个内容呢,在其他语言中。有一个专有名词啊,当然大片里边没有啊,这个专有名词叫做什么呢?变量作用域列。作用于练。好,能说这是啥意思,我不明白啊,好,我们给大家写一个小例子,你就明白了,然后在这里边我们新建一个文件啊,第13个文件,右键新建第13个文件。然后麦小线扣的四小线13。好,然后这里干什么事,我们写上我们的啊,国家。比如说我们的DEF国家用什么呢?China啊g China别DEF了,我们整个页面就当做国家行不行,整个页面啊,当做是我们的国家,当做是我们的国家。
25:12
然后干什么事呢?国家里面是不是有很多省,对不对,所以我们在里边定义一个省市啊,定一个省。定义一个省。定义一个省啊,一个省随便哪个省都行啊,比如说我们来一个呃,山东省吧,行不行,那我们在里边DEF好山东啊,山东省没问题吧,好,那在这里边山东省里边再定义一个市啊,定义一个市。一个市,比如说我们写一个济南市吧,行不行,一个市市市长的市呢,一个市D我们定义。济南市啊,当然这个是在函数里边定义的哦。这种函数呢?是什么呢?是函数里边又有函数的一种嵌套啊,另一个是叫做济南式啊济南式。
26:01
然后呢?然后再干什么事呢?接下来济南市里边我们再定义一个区,定义一个区。定义一个区一个区,比如说什么淮阴区吧,你想DF啊,DF一个淮阴区好搞定,我们就定义这些,也不定义太深了好不好,然后我们在这里边省之前输出啊,这是省的位置啊。叫此处。此处是山东省,然后在市里边我们定义print,这是济南市啊。这叫此处是济南市,此处是济南市。此处是济南市,然后这是我们的槐阴区,Print判括号写上这里是啊,此处,此处是淮阴区啊,当然大家有疑惑,说函数里边可以定义函数吗?那当然可以了,因为函数的本质就相当于变量赋值嘛,所以在函数里边定义一个普通变量当然可以啊,那定义函数为什么不可以呢?也可以啊,但是在其元一个名词叫内部函数,我们就不考虑这么多了,好,然后没有有问题吗?现在现在完全没有问题啊,程序性也不会报错。
27:15
是完全正确,没有错吧,好,开始我们的实验,什么实验呢?我在国家最外层给我们定义一个什么呢?定义一个变量,这个变量呢,比如说是我们的led啊,Leader主席行不行,咱们叫他主席啊,主席,因为大家知道我们国家的最高领导人是不是主席啊,好,那我想问一句,主席这个变量他是否可以在山东省内使用?也就是说,我在这第一的主席,他在山东省里说话有没有用来print一下,等会我们选上主席。呃,不是later啊,Le好有有没有用呢,不知道啊,所以我们在这边干什么事呢?调用函数,看看能不能进来,是不是调用函数啊。调用山东函数啊,那这外边DF直接调用,呃,不什么DF直接调用山东就可以了,我相信大家都是知道的,没有后边这些东西的话,大家一眼看去,这不就是一个普通的全局变量,是不是在这里边进行访问吗?完全可以啊,你们说的没错啊,确实是可以。
28:17
这很正常,主席在山东省说话有用吗?当然用了,好,接下来看我们这里边,除了山东省之外,山东省里边是不是又定义了一个济,又定了一个市叫济南市啊?好,那问题来了,济南市里边是否可以访问到我们刚刚定义的雷变量呢?可不可以呢?好,那为了让济南市能够执行,我们必须在山东省里边调用这个杠杆定义的函数吧,是不是,所以我们在这里边看好了,在这一块啊,在山东省里边调用。调用济南函数注意啊,你得注意这个调用的位置啊,因为你是在函数里面定义的,是不是局部变量只能在函数里边调用哦啊。所以这个必须在函数内,必须在山东的函数内,好,然后呢,在里边调进济南就行了,济南然后套上括号,右肩运行一遍。
29:07
看见没有,此处是济南市,你会发现主席是不是也可以在里访问?好,来,接着来,我们在淮阴区,这是济南市,里边又定义了一个淮阴区,是不是?那我在这里边也加上一句访问了什么呢?访问我们的later led,那淮阴区中可不可以访问到later呢?好,我们再注意看到了,由于淮阴区是在我们这个济南市里定义的,所以它的调用必须在济南里边完成,是不是好调用淮阴区啊?淮阴区,然后呢,DF啊不什么DF啊,淮阴函数上括号,然后右键运行一遍。你会发现,诶主席这个变量是不是也出来值了,所以这就是这么一个问题啊,我们在最外边定义的一个变量,它什么呀?山东省里可以访问,济南市里可以访问,回心区里是不是也可以访问,诶你会发现这个变量它的作用范围会向函数内部一层一层一层的传递,如果用图来给大家分析一下的话,可能会更好的节点,所以我给大家画一张图好不好找到我们的画图软件啊,找到我们的。
30:13
附件画图工具。画图工具我们啊,OK,打开整个页面是我们的国家啊,是我们的国家,是不是在国家里定义了一个leader变量啊,是主席,是主席啊主席,然后干什么事呢?我们在国家里边定义了一个山东省,是不是这是我们的山东省啊,山东省,然后在山东省里边我们定义了一个济南市,我们又定义了一个济南市。啊,这是济南市好吧,这个是济南市。济南市,然后济南市里边我们还定义了一个淮阴区,对不对,这里面还有一个淮阴区啊,啊按错了。这里边儿还有一个淮阴区。好,淮阴区。
31:02
淮阴区好,那这个时候干什么事呢?我们国家中定义的也这个Y最外边这个变量,也就是我们这个LA啊,就是我们这个LA,它的什么呢?作用范围啊,当然我们加格global,所以只能访问啊,它的作用范围会什么呢?会一层一层的往下传递,大家发现了没有,它会从这传到山东省里边去,然后从山东省里边又,嗯,不太好啊,从山东传到山东省里边去,是不是,然后从山东省这块又传入到了济南市,我还这样画吧。传到山东省里边,山东省又传到了济南市中,济南市又传到了淮阴区中,看见了吗?还可以依次往下接着传,所以大家会发现这个变量的什么传递像一个链条一样,一层一层的往函数内部深入,是不是?所以这个东西就叫做函数不是不是变量的作用于链啊,其实就是指变量的有效范围可以一层层的往下传递,明白了吗?所以在这里面给大家讲的变量作用链就是指变量的有效范围可以向函数内部层层传递啊。
32:06
变量的有效范围的有效范围可以向着函数啊,可以向函数内部。函数内部层层传递,当然你加不加格global就是你的事儿了啊,你不加global的话,它就只能访问对不对,你加格萝卜的话就可以什么呀,就可以直接使用了啊,正常改查随你便啊,层层传递好了,这那给大家加上啊,如果没有,如果其他函数内部啊。叫,如果其他的函数内部没有使用global关音词的话,Gal,那么指的可以。访问啊,可以访问这个变量,可以访问变量,那如果其他的函数中,如果其他的函数中还使用了可卜。关键字的话,那么可以进行任何操作,也就说白了,返回我们这个代码这块来看的话,我的意思就是你在这里边要不要加格global,你加global的话,你这就可以改,是不是你不加格global的话就只能访问啊,但是它可以访问这种传递也叫做作用力。
33:17
看懂了吗?这就是关于我们变量作用于链的问题啊,就使得我们变量可以层层向下传递,好吧,好了。本小节到此结束,下一小节开始,我们给大家讲一个另一个关键字啊。
我来说两句