00:00
好,完事以后,现在呢,我们就呃,最后一个东西啊,最后一个小东西啊,这个东西呢,就是咱们的装饰器了吧,对吧,而装饰器我们呢,点击我们的授课机构。呃,这里边倒看不出来,点击我们的公开课,点击我们的课程,点击我们开始学习,那么这个开始学习是不是因为他登录以后,是不是才应该开始学习啊,那现在我们退出,退出了以后呢,我们点击公开课。随便领一个课程,他照样可以学习啊,对吧,他一点击。诶。哦,现在没登录,是在里面报错了吧,那么那么我们呢。不是不应该让他出现这种东西的。对吧,他一点击开始学习,我们是不是应该让他跳到动作页面去啊,对吧,那么呢,你给我弄出这么一个玩意来,是不是就很不爽了,所以说呢,我们在这就应该干嘛。
01:01
给他来一个东坡大啊东坡大那么呢,我们之前是不是是这个样子,找到我们的课程。课程里面是不是有我们的一点击开始学习时去到我们的这个video页面啊,对吧,找我们课程里面我们有一个。为调,那之前我们是不是导入我们的。装饰器啊,对吧,Frame我们加过它下面有个control吧,对吧,Control它下面有个o of下面是不是有个decorators。我们是不是导入我们的log?记得咱们之前玩过这么一个玩意儿吗?对吧,我们呢,可以干嘛,可以给他。是不是加这么一个装饰器啊。然后log快的在这里边还记得我们这边有一个loging URL是不是指向我们的user,它下边的user下划线。还记得咱们是不是这么这么这么加的,对吧,这样加了以后呢,我们就可以干嘛到这边刷新,刷新以后呢,我们这次再点击开始学习总结。
02:07
他这不给我跳到这个这个登页了,但是当我们登录成功以后,他这不给我跳到首页来了,对吧,而现在我们的。不想干这件事情。啊,也是想要让他有这个灯泡的,但是呢,我们想要加的功能是。从哪来,去哪去?你刚才点击的是开始学习那块吧,你登录成功,那你就回到你开始学习那块去。而不是说你登录重复直接给我跳到哪了。抽到首页还得让我再干嘛,是不是再点回去啊。能听明白什么意思吧,OK,所以说他这个装饰器虽然说可以用,但是。有点low啊,有点low,因此啊,咱们自己就得干嘛,自己去写一个装置去,所以说呢,我就把他这个干嘛不掉了,不掉了。掉了掉了怎么办呢?我就在我的这个兔子里边。
03:01
还记得咱们这个兔子吗?对吧,我在这,我去见我自己一个谁啊,专门去写我们的装饰。大口。Wait。OK,在这里面呢,我们写我们自己的装砌而专记,咱们大家还记得吧?装器它的它的这个这个这个这个架构是啥呀。一个函数返回。外部函数是不是返回内部函数啊,对不对,我们是不是就就可以称它是一个装置解,其实这外部函数返回内部函数,我们应该称它为啥呀。B包对吧,它是不是应该是B包啊,而B包它还有个要求,是不是内部函数要用到外部函数里边的变量,对吧?那其实我们大家在学官司的里边,官司里边是不就有B8官司讲过B8玩OK。
04:05
那么这个B包也是你出去以后。你如果玩到前端,出去面试是必面的。啊,就要问你这个B包它是怎么个玩意啊,对吧,好。那么我们这边是不是就底算我们一个函数啊,对吧,这个函数我们就叫啥呢,就叫做login。我们的。带。没打吧?对不对,这是咱们外部函数啊,一边是不是还有一个函数啊,我们就要应那边。行不行对吧,这里边儿是不是也有个函数啊。对吧,这个函数我管你选择啥,然后是不是一个啥呀,是不是应。把你这个内部的函数。返出去,我这个东西是不是就可以称作这个装卸啊。对吧,而且我们在下边假设我有个函数,比方一个F1。
05:05
对呀,我想要对这个F1去加入装饰器,怎么怎么去加呀,是不是在上面直接艾服我们的login DEC瑞呀,当然还有参数,我们是不是也可以算参数啊,对不对,我们加上这个玩意以后呢,他们的整体相当于是哪句话?他们的整个相当于是哪句话?你要知道,你要知道这个玩意儿最终他干了一件什么事情。扩展函数。扩展,怎么是扩展函数?它其实是把的指向。注销了谁了?整个的这这段话,我们正儿八经没有这个简写的时候,你是不是应该写成这个样子,是不是F1等于谁啊?那我给你带个外套,然后把谁穿进去?
06:05
这是你装饰器的根本吧,嗯。我知道嘛,这块肯定是把这个函数传进去的。这个肯定传一个啥。传个函数的。你那你对你要的。传谁?你把插进去没用了。我我我我现在这块不不就是一个。不就是一个架构吗?你装饰器,你不就是相当于把你这个F1传到我这里边装饰一下子吗。你抓周机没讲这个艾特福的时候,你老师不应该从这给你引申到这块吗?你都它是不是相当于这个FN在那个。
07:01
哪来的阿文啊?啊。你这相当于是把F一传给我这个函数,传给外部的这个函数,我外部的这个函数在干嘛?在对你这个玩意进行构造吗?全部扩展你这个函数吗?要不怎么扩展。那你觉得我这个应该穿谁?肯定是那里需要有的。不是我这里边的东西,我先不跟你说吧,因为我里边的东西我这是pass吧。对吧,就是说这只是一个架构,咱们没往下写呢,我们大家要知道你在你的F1上是不是加这么一个at loging,加它就相当于本质是这个样子吧。OK,那么他怎么能把这个一变成它里边的这个了呢?怎么就变了?
08:07
OK,其实真真正正你加上这个玩意儿,它确确实实把F1。这个函数其实这个F1,它这个名字罢了。把这个名字让谁用了,指向这个英了。32,我画图。咱知道大家从内存的角度去看一下子啊,它到底是装饰器干了一件什么事?要不的话,你出去人家问你装神器,一下就把你摁住了。来,我们大家看一下子。现在呢,是这个样子。现在这个样子。我们呢?这边是我们的内存,你们都知道堆栈吧?知道这个玩意吗?好,现在这是我们的堆取内存,内存里边是分四大四大块的。
09:02
咱们通常用的就是对和站对吧,那么呢。接着我在这边。有干啥了?战区,OK吧,通常情况下,我们所定的名字。一般都是在哪?嗯,下去。OK,那么呢,我们在这边写了一个啥呀。是不是DeFine一个谁?FER。后边我们是不是又底翻了一个logging,我们的decorate。我就写个这吧。对啊,你在dark read里边是又抵放了一个英的。因为这是不是三个函数。是不是好,那么呢,你定义了这么一个F1,那么它就会在这里面干嘛。给你来个F1的变量。只是一个名字罢了。为了F1哼,战区里边存的是名字,而堆区里边干嘛会给你开辟空间,这就是你的这个函数。
10:04
只是一个函数题。OK吗?他怎么就能叫F1函数呢?它是把这个F1干嘛指向了这块内存,对。真真正正的底层,因为我们现在做的都是这个案子。对吧,而他就是这么做的。啊,之前我带学生玩C的时候就这么玩的。对吧,它只是让这个F1指向了这块内存,所以说呢,我们说的F1函数其实说的是这块内存。OK,好了,接下我们又定一个函数,是不是这个DEC克瑞塔对吧?但是你定义这个玩意,你的本质上不也是在这里面一个变量吗?对吧,我不管你放在哪,你放在哪都是扯扯扯淡的事情,对不对,那么我们在这里直接再来一个。这里面呢,就是我们的locking。大。OK不OK,同样的他也会干嘛呀?
11:02
那也会有他自己的一个内存啊。它是另外的一个函数吧,另外一个函数,它就是另外一个对象。OK,那么他就干嘛让这个玩意儿指向了他。因此,我们说的login指的就是这个函数。指的就是这个内环。三呢,它只是一个引用罢了。OK,这二种同理,你说这个英呢,它是不是放在这里边。放在这个函数里边,放在这个函数里边,但是内存它哪能有什么。占了那块内存,就占了一块内存了,他还在内存里面再出来一块内存不会的,所以说他还是干嘛。还是这样的道理,在这是不是来一个啥硬的,同样那理应的里边它也会有个什么自己的那一块硬块,然后他的也是干嘛。他只向自己的。这目前就是我们现在所看到的什么呀。
12:02
这三个函数。好,那么现在他做了一件什么呀啥,他其实这边装置器就是来了这么一句话,然后F1等于啥呀。等于log DEC f1是不把这个F1是不是传进来了,传进来以后我管你是啥,反正你这个是不是相当于是我web函数的调用了。F1等于后后边这个它是不是相当于是我外部的这个高瑞塔函数的调用。能听明白什么意思,那么也就是说,他F1等于谁了?法国是谁?是不是硬的?是这意思吧,它让它等于它最终这么图上画出来应该是什么样的。也就是说这一块它是把你这个F1的指向。
13:01
诶,我的颜色呢。他说把这个指向干嘛呀。给你做了。他说F1等于谁等于用到了吗?走右的,再看一个F1干嘛,是不是这样指向它了。倒是。不就是这么个图。我端到代码上啊,就这句话。我们就最简单的理解方式,你把F1传给传出去调用,是不是返回那个值啊,是不是返回个英的,返回到英的,你现在是不是把英的复制给这个F1啊,把英的赋值F1,其实真真正正它赋值啥呀,赋值的是这个引用。
14:03
也就是说,他把这个鹰的所指向的这个地址也给了谁了?给了F1了,给了F1是不是现在代表着就是这个F1也格玛?是不是指向这个函数?相当于是谁把你F1的函数。给变了。然后我们在这个阴道里边。是不是再写一些额外的功能,你F1是不是就相当有了?你干的不就这件事吗?之前东西就没了啊,就不管他了啊,你爱怎么办怎么办去。能明白啥意思吧?
我来说两句