00:01
来来来,看我屏幕,看我屏幕现在是全屏吗?来把你们窗口。为什么?来在这我们新建一个拍零三,叫动态传三啊单首先我们要明确一个概念,就是我们的食参到目前为止已经说完了,参也全部说完了,所以今天讨论的参数指的是哪呢?是行参,也就是在函数声明那个位置啊,你要讨论的是,那么首先咱们去写一个函数啊,写一个函数,咱们引出这个动态参数到底干嘛的?首先来一个函数,比方说叫吃吃啊,吃的话呢,我可以说吃馒头,吃花卷,吃小米招,但一般情况下我们会有两种东西,一个叫做主食,一个叫做副食,所以呢,来两个东西,一个叫做good food啊,再来一个盖的food,对吧?一个是好食品,一个是垃圾食品,对吧?主食一般米饭、馒头、花卷吃了就挺好的,但是副食啊一般什么呃。
01:12
呃,辣条对吧,首当其冲就是辣条,还有什么,呃,炸鸡啊,这种东西都属于副食好了,那么有这两东西我就可以打印来,我可以吃啊,我要只吃逗号,来一个good food,再来一个什么bad food是吧,把它弄出来好了,那么现在函数写完了,去访问它,很简单,直接吃小括号里面写上,比方说主食,我想吃盖浇饭啊,主食,然后呢,Bad food,不好的食品,不好的食品什么呢?辣条好啊,辣条,然后这个时候运行这个程序应该都能看得懂我这个对吧,很简单,这个同学好了,现在我的吃只能说吃个什么呢?这个好的食品坏的食品只能选一个,那么这时候想想,我如果想喝饮料。
02:06
我想喝饮料怎么办?是不是再来一个对不对,来逗号,再来一个drink好了,再来一个drink,那有的时候啊,我喝完饮料还不够,我还想吃点冰淇淋,我想来一个icecream对吧,那喝迷不够,我想再尝尝啤酒,尝尝这个这个这个这个怎么讲呢?不是红酒啊啤酒啊,白酒,喝点酒对不对,喝点酒来点酒,那喝点酒还不够,还不够对吧,我还想还想干嘛,消化消化是吧,消化消化好了,也就是说我这个吃这个动作,你看我写了这么多参数,这么多参数终归写到一起,合到一起,我可不可以把它写成什么呢?食品是不是食品,是不是全是吃的对不对,但是我这块帮啷来这么多东西,看着啊,我来这么多东西,那么一旦我的函数定义成这个样子,我下面传参是不是就咔就传那些东西对不对,那么现在。
03:06
客厅来了,我这顿不想吃辣条。我不想吃垃圾食品,我没有吃垃圾食品,但是你参数是不是给了垃圾食品,你是不是就必须得传对不对,这样是不是就不太好了,不错什么事了。没事没事没事,我离你挺近的啊,来看着啊,也就是说当我不喝酒,不吃冰激凌不干嘛呢?不吃垃圾食品,我只吃主食,我就吃这浇饭,你非得让我传那么多参数是不太好啊,对不对?那么最好的解决方案干嘛呢?哎,你传什么我就吃什么,你传多少我就能吃多少,是不最好是这样的对不对?所以这里面我们就可以引出一个叫动态传参这么一个概念,也就是说在我的函数里面,我可以这样来写DEF叫吃,吃什么呢?吃食物,但是呢,这食物我这么写是不是表示的是一样东西对不对?来,我要吃看啥我要吃逗号,来个food,现在表示的是我接一个参数只能传一个,但是我想的是不是传一堆对不对,因为我上面这个是。
04:24
写了一堆,但是有的时候我又想吃一个对不对,又想吃一个,又想吃一堆,你这函数怎么能满足我呢?看这在这加一个星号,加一个星号,星号表示的是任意的东西,任意的东西,那么这里面表示的是可以传入任意的位置参数,可以传入任的位参数,注意啊,星号表示的是任意,后面负的啥意思?参数的名字明白啥意思吧?参数的名字就好比我们上面写的good food,这是参数的名字,对,叫行参,那么这里面也是星号,Good good,这里面这good是行餐的名字,前面星号表示啥任叫啥任意,对吧?很多个任意的对吧?那么这时候看好了,我就可以这么玩,我就可以这么玩,我可以说直行哥吃,吃的时候我往里面认为该交换该交换。
05:25
盖交换,那这时候盖浇换进到负的里面去,应该能运行吧,对吧?来走你一个参数嘛,对吧,搞得定,然后再往下逗号看好了盖浇饭我还可以吃啥辣条,辣条还可以吃面条,看着这时候盖浇饭辣条和面条统一扔给谁了,负的一扔给负的,也就说负的可以接受任意一个位置参数,换句话说,你传进来的任意一个位置参数都会被谁接收,被负责接收好了,这个时候我们运行走,你看到我要吃什么,盖浇饭辣条面条,看见了吧,直接没接到。
06:07
值接没接到,接到接到了,参数接到了,那么接到的这个参数是什么类型的?来动态传参啊,动态参数吧,参数接收到的是什么类型的,是table类型的数据,比如说他会把这个数据你给的这一堆给你分组装成一个元组,然后交给这个函数啊,交给这个函数好了,这个就是所谓的位置参数的动态传参,位置参数的动态传参,那么这种参数它需要注意些什么,以及咱们是不是还学了位置参数对不对?那么想想我位置参数如果和这种动态参数一起用的话,如果一用的话,你琢磨琢磨,先写谁后写谁置,为什么先写位置参数,很简单,看着啊,我如果把这个位置参数写在前面,比方说来个A呀,来个B啊,那这时候第一问。
07:08
A和第二位是不是有位置给A,它给B,然后面条给负的,是这样的吧,有位置能对应,但是我我先运行一下啊,先运行一下来看这面条是过来给付子,但是如果我反过来写,兄弟们注意好了,我把这个拿过来丢在这,丢在这来我给他反过来写,是不是该浇饭给了负的,面条给了负的啊,辣条是不是也给负的对不对,这三个东西都被负的,是不是给收了对不对,后面这俩A跟B有值吗?没有对不对,直接就被收掉了,直接就被收掉了,所以这个顺序我们又进了,进了一步叫什么呢?先写位置参数,然后是谁动态,然后什么星的这种动态传参,对吧,动态参数,好了,这是这两个东西的一个顺序,那么还有一个我们今天学到的叫做默认值参数,那就叫做默认值应该写在这个动态参数的前面还是写在后面?
08:08
最后往写后面,你琢磨琢么,应该写在前面还是写在后面后面后面前面吧,前面来我们来试一下啊,我们来试一下,我们把这个掉啊,我们把这住掉,来在这准备一个DEF,比方说叫它放K,然后呢,来一个A呀B呀C,然后后面来一个D等于五,这是默认值参数对不对,然后再来一个星,什么呢星。星X吧,啊星X来往下看好了,我在这面呢,去打印这个abcd,还有这个X啊,还有这X,把这几个值都给它打印出来,那么往下走,我们去执行一下fun,那么这时候我给一传给谁A来二给谁BC3呢给C4呢给谁四给谁是不是D对不对,按照位置传嘛,对不对,然后再往下我来个逗号,来个五给谁给二对不对,来看一下走你。
09:14
啊,1234都接到,然后五给这个后面的二字,对吧?那么这时候你想这个默认值有没有起作用,有没有起作用,是不是没有起作用,那么想想我现在想让这个默认值起作用,得怎么写起作用,作用四写啥也不写,啥也不写都行吗?我直接写个,哎,我直接写个方,这行吗?不行吧,你得给什么,123是不是要给,是不是要给,然后这个D等于五在这往这一摆,往这一摆,那么你后面给任何值,给六或者给什么给,给个四是不是都给这个D了,对不对?那么一旦说你把这个默认值参数放在动态参数前面的话,你想想这个动态参数和默认参数是不是只能有一个才能生效,只能有一个能生效,比方说我这给了四,给了四啊不不给四不给四,就这种情况而言,这个默认值参数。
10:14
是不是生效了,生效了,但是这二有用吗?没用,所以这时候打印的结果什么1123,然后五五是谁,是不是D的默认参数啊,后面的元组是什么,是空对不对,没传进去值,所以这里面你的默认值参数如果放在这个星面的话,放在这个星前面的话,是不是就出问题了,你这个东西要么它起作用,要么它起作用对吧?所以这里面你要注意,你要把默认值参数放哪去,放后面,那么看一下放后面会出什么效果,好了,放后面,放后面的话,首先F,呃,放123,结果是什么ABABC,然后空,然后呢五,首先默认值是不是生效了,对不对,好了再往下来放,你注意一下1234567,那这个时候你琢磨琢磨是什么效果来。
11:14
那我D等于几,D等于几等于五,为什么D等于五,那我传了这么多,你为什么D还等于五呢?掉挺好,因为你这个是个什么位置参数,动态传参,所有的位置参数是不是其余的都被它收掉,对不对?那么前面一二三都进到ABC里面去,剩下的4567全进哪了,是不是进二了对不对?然后最后这个D是不是始终等于五是吧?OK,运行一下我们就看到D这块是五,始终是五,所以你这个动态不是这个叫什么默认值参数,默认值参数如果你想让它100%生效的话,你必须放在哪呢?放在最后,必须放到最后它才能100%的生效,但是这个时候问题也来了,你这个默认值参数通过位置参数还能赋值吗?赋不了能赋值吗?能改吗?改不了了,那想改怎么改逗号关键。
12:14
是不还没用呢,对不对?来D等于马大哈,可不可以来试一下,等你看D等于马达哈,是不是直接就关键字就把它指定了,应该等于什么,对吧?这个是可以的啊,这是可以的,OK,所以这个顺序我们暂时先讨论到这个程度,那么接下来兄弟们,你们要去把哪个程序给我写的呢?OK,把这个写了,就是放刚才写的那个吃,还记得吗?和那个吃吃里面接一个food,接一个food,然后我们去打印我要吃什么东西呢?Food,把这个去写一下,然后测试一下,看好这个新food到底在这里边做了什么啊,到底做了哪些工作,把这个去写一下啊啊。
13:07
来把这个我们写一下啊,我们写一下,写个函数,然后给函数传以传入任意个整数,那么返回这些个数的和,我们先把整个的大框先弄出来,首先它来一个函数DEF求和,然后小括号里面它要传参数,传任意个整数,任意一个整数什么意思?是不是任意一个对不对,任意一个,比方说是一个行吧,就N吧,然后这时候N我如果接收到的话,是不是应该是一堆数对吧?我们先不管它是什么,先来个pass,你想想这些东西如果你去调用的话,应该怎么写,是不是和小括号来个一,来个五,来个七,来个九,是不是这样写对不对,这样写的目的是啥?是不是求这些个数加一起的和对不对?那好比你现在是N,是不是就是这些数对不对?是这些数的话,从N里面把这些数一个个拿出来,怎么拿怎么拿,是不是直接速度循环就可以了,Element。
14:08
N对不对,N然后拿到的每个数我要干嘛,我干嘛相加对吧,好了,相加的话来个萨等于它等于零,然后呢,怎么算sum加等于一是吧,算完了之后我干嘛瑞特sum是不是就完了,然后这时候我就可以直接打印这个结果就好了,就好了,走你拿三十来,来个五逗号六,这是几点几55.6点号五什么逗号六应该是11对吧,11就完了,那如果扔个五呢?扔个五就是五啊,扔个五就是五一个数对吧?那现在你看我这个函数是不是可以接受这一个数对吧?还是一个数,然后求和返给你,求和返给你啊,这就是这个题啊,这个题这种东西,这种东西听好了。
15:08
在别的语言里面,反正至少我知道在Java里面1.7之前没有这个东西,没有这个东西后面我就没再研究了啊,然后对于其他的变种语言很少有这种,就是就是这这种东西啊,动态参传三这种形状动态类型一时爽对吧?重构代码火葬场啊,真的这种东西你写的时候会觉得很很容易,但是重构的时候,当你真的出问题的时候,这东西很难去挑啊,很难去挑好了,那后面后面你们真的写多了之后啊,自己去感悟这个事啊好了,那么现在我这个星在这里表示的是啥意思,任意任意的对不对,任意的,但是这时候听好了,星表示的是什么呢?是任意的什么参数,位置参数,火线接的是位置参数,那么食参那边传参的时候,不单单有位。
16:08
参数还有个啥关键字参数对吧,所以我们现在看好了,你这种星负的这种情况,或者星这种情况,你是没办法接收什么呢关键字参数的,你只能接什么接位置参数,所以我们要接收第二个知识点,就是接收怎么呢?啊,动态吧,动态接收关键字参数,关键字参数的写法跟那个那个那个那个位置参数那写法很像很像,只不过咱们位置参数是几个啊,是一个星对不对,一个星这写的什么位置参数看啊,这是位置参数,下面这个关键字是啥?是两个星,这是关键字参数,就是一次性接收什么呢?一个key一个value,一个key一个value,这是接关键字参数,好了,那么这些东西说完了之后,我们来试一下好不好,用DEF来一个funk,比方说。
17:08
星星twitterws,星星TS就是个参数名,你不懂的话放个food可不可以吧,来往下走,那么food完了之后,我们去打印一下看着啊print打印这个food,别的我不整了,就直接打印了啊,不整虚花里胡哨的,直接我就可以去访问这饭款,那么现在看好了,我在传盖浇饭,或者传什么辣条,这是关键字参数吗?不是,所以早已数报错数,不是报错,报什么错,给他传错,你这边不要位置参数,但是你给了几个,给了两个知道吧,没地儿给,没地儿给,所以这时候你想传的话,你必须给什么指定一个关键字,这关键字它命名了嘛,没个名,所以是不是你可以随便起了,对吧,比方说起个名叫啥。
18:08
啊,叫叫叫,这是盖浇饭,叫什么主食是吧?主食叫good food good food等于它注意你的情分,上面有没有这个词,没有,对不对,没有来,往下good,再往下是谁了,Bad food,好了,这俩东西都传进去,我们看一下,走你。是不是有这两个东西没报错,并且纸也扔进去了,并且你这接到的是什么玩意儿,接收到的是字典,接收到的是字典,那你注意看咱们之前说你的关键字参数,这前面这个名字是不是必须得是行三上的一个名字,对吧?但是现在邢台上有没有这名字,没有没有能不能传去,可以传,怎么传的,自己怎么传的,自己怎么叫自己是把这个作为KY的,是不是扔这里面去,它作为KY的扔去,那么星星负的在这里面干嘛的,这一个不是串这字点星星附的在这是动接收关字参数,它是动态接关键字参数,这是星星在这里面表示的含义,那么负的啥意思?名字吧,就是个名字,跟上面这个名字是一样的,知道吧,跟下面是一样的,所以这里面参数你在。
19:31
函数里面用的话,参数是啥是负的,而前面星星表示的是动态,表示动态,好了把这个去写一下,然后理解一下,你这里面不但可以传单,你还可以传别的啊,你想传什么就传什么,比方说我再传一个,传一个drink,没有限制,没有限制,只要是一对,只要是一一对应的就可以了,你想喝什么?那天我听人说要冰封西安的,不是山峰的,不是山峰的峰,我那天看着好像是这个峰,看错了没有,没看错,应该应该是山寨部,应该是山寨货啊。好了,把这个去写一下,你可发现都可以穿啊,都可以穿,你自己尝试着随便往里面扔几个啊。
我来说两句