00:00
好,接下来呢,我们再来说一点这个参数的特殊的用法啊,我们来创建一个新的文件保存一下,我们这是一个零三,我们叫做一个呃,叫做一个不定长的参数,哎,不定长的一个参数啊,关于参数呢,我们最后来说这点东西啊,那什么叫不定长的参数呢?啊,还是改一下扩展名。嗯,没有写点PY啊,改完了以后在这我们来说一下不定长的参数。什么叫不定藏参数,那我们还是先举个例子啊,那现在我要求干嘛呢?哎,我要求我们来定义一个函数啊,定义函数它可以干嘛呢?哎,可以求任意。哎,任意一个数的和啊,任意一个数字的一个和,那这时我们怎么办?哎,还是那种方式,我们直接DeFine一个这个sum,哎,Sum这来一个A逗号B,然后呢,我在这里直接print一个A加B,然后在这我们来调一下,直接调一下sum,我们来个123逗号,一个456,直接保存一直行是不是就算出结果了?哎,等于一个579,那这是算两个数的对吧?当然现在我们进一步要求了,你算求任意一个数字,也就是说他现在只能算两个数,那假如说现在我的数变成三个了,我有一个什么呢?我789,诶这是一标题干嘛了,一直行是不是报错了?哎,因为人家需要两个参数,你给了什么呀?你给了三个就报错了,那怎么办呀?哎,那我一想这样吧,我这来一个ABC,哎,这变成A加B加C1保存再直行,哎是不是就算出来了,那就算出来了,但是这又来问题了,什么问题啊,我现在又想算两个数了了。
01:46
又要签两个数数一直行,干完了是不是又不行了,哎,又不行了,所以这就是我们现在一个问题,现在我的参数了,我的行参的数量和食参的数量必须得是什么呀?必须得是一样的,诶,你有三个行参就必须有三个食参,必须得一一对应,这样我这个函数是不是才能正常调用啊,哎,正常调用那就永远都不可能满足我们题,为什么呀?因为我的提意是求任意一个数字的和,什么意思呀?我如果给你十个数字,你就给我算这十个数字的和,我如果给你五个数字,你就给我算这五个数字和,我如果给你100个数字,你是不是就给我100个数字和呀?哎,所以注意,这个时候无论如何也没有办法满足题意,那怎么办啊?那怎么办?那这个时候我们来说一下另一种方式,哎,我们在定义我们这个函数时,哎可以什么呢?哎可以在我们行参前边干嘛呢?哎,加上一个这个什么呀,加上一个星号啊加上一个星号,那这样什么呢。
02:46
哎,这样我们这个什么呢?哎,这个形参诶将会获取到我们所有的什么呀,所有的食参啊,将会获取到所有的食参,它将会干嘛呢?诶,它将会将我们这个所有的食参诶保存到一个什么呢?保存到一个元组中啊,保存到一个元组中,这就这么一个星号,还记得我们之前讲的这个这个这个。
03:13
叫什么呀?我们是不是讲过一个这个解包啊,哎,或者解构赋值对吧?哎,解构赋值当我们去整一个元组,我们这么写过是吧?A,诶A逗号B逗号一个星号C,等于我这来一个一逗号二逗号三逗号四逗号五逗号六,它的效果是什么呀?诶一给A,然后二给B,剩下的值,因为C带了一个星号,剩下3456是不是都会给C啊,哎,都给C,那这个星号带我们的什么呀?在我们的函数里也可以用,我们来看一下效果啊,直接来一个D范定义一个FN,来一个括号,我直接来一个A,这时候来什么呢?来一个星号A啊,来一个星号A,那这个时候我们来打印一下A。打印下A啊,直接看效果,那现在来看啊,我现在我不传参数,不传参数这个跟我们之前特点,如果你不传参,这是不是报错了,大家看这啊看这我这一保存一直行走一个A等于一的括号,先说有没有报错,哎没有报错啊,没有报错那等于括号什么情况,哎,等于括号什么情况,来我们来看一下type一个,诶看一下A的类型,直接一直行A是什么?A是一个table,是不是个元组啊,哎,是个元组,实际上A现在变成一个元组,那这A现在什么效果,现在A的效果就是你传几个参数,A就有几几个值啊有几个值,比如说我这传一个12345,这一保存一执行,现在来看A还是一个元组,那这个元子里有几个值,有几个值啊,245是不是一共有五个值啊,哎,有五个值,它的特点是你给几个值,元组里就有几个元素,它会接收所有参数,哎,我们来说一下哎,星号A它会什么呢?哎,会接收我们这个所有的什么呀,哎位。
04:56
配置参数啊,位置13啊位置13,并且什么呢?诶并且会将其诶将这些十参哎统一哎保存到一个什么呀?哎一个元组中啊,统一保存到一个元组中,也就是说这里你无论传几个啊传几个参数,它都会统一保存到一个元组中,那这个操作其实我们也叫什么呀?哎,我们也可以叫它为是一个这个装包什么叫装包,我们把这一个一个零散的参数统一装到一个什么呀元组里,本来我这参数是一个一个零散的对吧?一个零散的它通过装包干嘛呢?把这些参数统一放到了一个什么呀元组里,这就叫一个什么呀装本啊,我们这个参数的一个本,它的好处就是你想传几个参数就传几个,不传行不行,不传也行啊也行,那好,回到我们上面的练习,那上面的练习我能不能改一下,哎,当然可以改了,那这里我就不用传ABC了,我直接接收一个什么呀,星号A。
05:56
那这样你无论传几个参数是不是都行啊,哎,传几个参数都行,那同学说,那老师我要想求和怎么求啊?哎,求和就更简单了,来我们一步步写啊,我先来定义一个变量,哎,定义个变量来干嘛呢?哎,来保存我们这个结果啊,直接来一个reut result等于一个零,哎,默认我们先让它等于零啊,它就来保表,保存我们这个和啊,保存我们这个变量的一个和,好,那这整完了,既然它是一个元组了,对吧?A是一个元组,元组里边是不是有很多数啊,哎,很多数,所以在这我们需要什么,我们需要变列元组并什么呢?哎,并将我们这个元组中的什么呢?哎,中的这个数进行什么呀?进行累加啊,进行累加,这个我们之前是不是都做过呀?怎么玩?哎,我们来一个for循环,来一什么呢?哎,来一个N因什么呢?A,哎,我来获取到A里边的所有的什么呀,所有的这个数字,这个我不多说了啊,之前都写过好几遍了啊,Result加等于什么N,我。
06:56
是不是把这个结果累加到这个result里啊,哎,不断进行累加,那最后我们这个蕊造结果是不是就是这个和呀,诶造结果就是这个和一保存这函数定义完了,它的强大之数在哪来看这我调一下,我现在传一个值,传一个值,传一个值它就给我算什么呀,一个值的相加结果,我要传两个值,我来一个456,我这一保存走一个,是不是就算123加456啊,我传三个值,来一个789,来一个十,来一个诶来一个十,来一个这个20,来一个30,来一个40,它都会把这些值干嘛呀给你加上,因为这个是一个不定常的一个什么呀,不定常的一个参数啊,不定常的参数传几个都行啊,这让我们的开发变成什么呀,更加灵活啊,更加灵活,这是一个不定常的参数,但是这里边其实我写的不好啊,写的不好,为什么不好呢?因为既然是不定常的参数了,一般我们都会用一个什么呀,负数,它返回的是一个元组,所以这我们可以来一个什么呀,Numbers用一个复数告诉你这是一个不定常的,这样看起来更明显一些啊,更明显,你写个A一点意义都没有。
07:56
对吧,1.1没有,所以写我写A这种参数就是我们上课来演示的,真正开发的时候是不要这么写的啊,不要这么写的,好,那接着来说,诶那同学说了,老师那这种不定长的参数我是不是只能写一个呢?对不定长的参数,那注意啊,我们这个带星号的,哎带星号的参数,哎这个带星号的型材只能什么呀?哎只能有一个,哎只能有一个,因为什么呀,你写多了,我是不是没有办法分了,哎没有办法分了,那然后我们来说一下,还有一个我们这个带星号的参数,哎可以什么呢?哎可以和其他参数哎配合使用啊,配合使用什么意思,跟我们那个解包那个一个意思啊,直接来一个FN2,我这来一个A逗号B逗号CC,我这来一个星号,这其实你一看你也能明白啥意思,我来一个A,等于我先输出一下A啊,我把这参数都输出一下,走一个,这是一个B,等于我输出一下。
08:56
啊,B这是一个C,等于我这输出一下这个C啊,三个值我都输出一下,在这我直接调一下FN2FN2,来一个12345,猜猜什么意思?哎,先猜A是多少,A是第一个参数,毫无疑问,A是不是肯定是一啊哎,B是第二个参数,那B是不是肯定是二啊,那剩下345呢?哎剩下345全都给什么呀?给C啊给C说白了第一个参数给A,第二个参数给B,剩下参数无论有几个,有1万个也都是什么呀,都是C的啊,都是C的,我们这一保存一直行,是不是A是一,B是二,C是345啊哎,C是345,所以这么写的意思是什么呀?哎,第一个参数给谁呢?给A,然后第二个参数,哎,给我们什么呀?哎,给B,然后剩下的。
09:42
剩下的都保存到我们这个C的什么呀?哎,原组中啊,都保存到C的原组中,这是我们说的一种定义方式啊,一种定义方式,或者还可以怎么办呢?来看着了,我这给它注掉啊,CTRLC我复制一下,然后给它注掉,还可以怎么写呢?注意了,我们这个可变参数啊,可变参数星号,这个参数不是只能写到最后,我也可以写什么呢?我也可以写到中间啊,我也可以写到中间,但是这个时候注意注意啊,我们写到这以后我再调就该报错了,哎,同学说那这还不好理解,这不就是第一个给A,最后一个给C,中间这个给给B吗?注意这个不是这个意思了,哎,这不是这意思了,我们来看效果啊,来看效果,我这一保存,我这一执行干嘛了,是不是报错了,哎,报错了,所以这块错我们就不管直接说了,我们的什么呢?哎,我们的可变参数,哎不是必须什么呢?写在最后,哎不是必须写到最后,你也可以写在中间,你也可以写到第一个啊,你也可以写到第一个,但是注意啊,但是注意注意什么,哎可变。
10:42
但参数或者说什么呢?哎,带星的参数后的所有参数,所有参数诶必须以什么呢?诶以这个关键字的这个什么呀?哎,关键字参数的形式传递啊,所有带星的参数后的所有参数必须以关键字的形式传递,所以注意这个A1给A是没错的,但是谁给C他就不知道了,因为B是不是会接收后边所有参数,所以不知道谁给C,所以他就找不到C给参数,所以这个时候C必须后边写一个C等于五,你告诉他这个五是谁的,是C的啊,这个五是C的,这一保存一直行是不是才行啊,哎,A是一,C是五,B是234,注意了,而且这个C你还就得写到最后,你说我写个四吧,写个四这一保存是不是也报错了,哎,也报错了,必须写到最后,你跟你的参数序得是一样的啊,所以注意所有带星号的参数后边所有参数必须以关键字参数的形式传递,也就说C必须得什么呀。
11:42
用关键字去传啊,运用关键字传,那再来看啊CTRLC我复制一下,那如果我这么写呢,如果我来一个什么呢?呃,星号A,然后BC啊星号A然后BC,那这怎么办?哎,那这就简单了,什么呀,那B和C都必须得用关键字的形式传度,你得来一个B等于四,这样才可以,A是123 B是四,C是五,如果你不写这个B,那对不起还是什么呀,还是会报错啊,还是会报错,所以这块一定注意啊,我们这写一下,我们写一下第一个参数,哎给我们什么呢?给A,然后呢?哎,剩下的这个参数给谁呢?哎,给B的元组啊,给B的元组,而且我们的C呢,诶C必须使用我们这个关键字参数啊,C必须使用关键字参数,而我们这里边这个我们来说一下星号A啊,星号A也就说写到最前面了,对吧,哎,我们这来所有的什么呢。
12:42
所有的参数都给,哎,这么说吧,所有的什么呀,所有的位置参数啊,剩下的这个位置参数啊,所有的位置参数都给A啊,都给A,而B和C,诶必须使用我们这个关键字参数啊,关键字参数就这么一个规律给它记住了啊,就么一个规律给它记住了,那这里边其实我们利用它可以做一件事,什么事呢?来住在啊,咱们都住了,然后在下边我还是来复制一下啊复制一下那这时候注意啊,我这写什么呢?我这写一个星逗号,星逗号你注意了,星后边没有跟变量名啊,星盒没有跟变量名,我就写一个ABC,那这样写什么效果,这样写什么效果?哎,那这样写如果什么呢?如果在我们这个行参的开头直接写一个什么呢?写一个这个星号后边跟一逗号,然后再写行参则。
13:42
要求什么呢?哎,我们的所有的什么呢?参数必须以这个关键字参数的这个形式传递啊,必须以关键字参数形式传递,所以这个时候你现在来看了,注意ABC你现在这么写肯定干嘛了,肯定报错啊,肯定报错,他就会给你报了一个这个报了一个错,人家写了什么呀,Keywords only arguments啊,Keywords啊,你看人家说什么呀,诶FN2T0这个位置参数,但是三个位置参数还有两个什么keyword only,哎,咱们就不管它了,这个东西咱就不读它了,哎总之它的意思是什么呢?就是说你这里边再传参数必须得干嘛呢?以关键字参数形传递,你必得写一个A等于三,这个时候才可以啊,这时候才可以,如果你不写A等于,那是不行的,你说我直接写个三吧,哎,直接写个三干嘛了。
14:38
就报错了啊,直接写三就报错了啊,所以注意,如果以后你定义函数,你有个奇怪的要求是吧,你要求我们的所有参数必须以关键字参数形式传递,怎么办?你在前边加一什么呀,加一个星号一个逗号就完事了啊,加一个星号一个逗号就完事了,好,这个是我们说的一个它,然后后再往下说啊,再往下说,再往下说什么呢?那注意了,我们的星号,星号的这个行参,哎星号行参只能什么呢?哎,只能接受什么呀?哎,只能接受我们这个位置参数啊,只能接受位置参数,但是你看啊,我们来看这么一种情况,我来一个DEFDEF来一个这个FN3 FN3我来一个星号A还是在这儿啊,我来打印一下print的一个A等于,然后来个A,看着我直接来写了,来一个FN3,我来一个这个,呃,B等于一,然后D等于二,然后来一个C等于三,写这么一个啊,写这么一个。这时候我已保。
15:39
走一个,诶人家说了,诶人家就就FN3没得到一个没有被解析的keyword arguments b,说白了BDC这三个参数他不认识啊,他不认识什么意思,星号型参只能接受位置参数,而什么呢?而不能接收我们这个关键字参数,而恰巧我们这个BDC3个参数是不是都是关键字参数,所以这个三个参数没有办法被A接收,那怎么办?那怎么办?来来看这了,那这个时候我们又出来一个新的叫什么呢?星星星星啊星星人看效果先啊看效果我这一直行,诶来看B是一,D是二,C是三,先说获没获取到,是不是获取到了,哎获取到了,那这个时候我们来看看它的类型,直接来一个这个type,一个a type a啊这一保存一直行是什么,是不是我们这个字典啊,哎,字典啊,所以这里边我们来说一下星星形态。
16:37
星星的这个形态,哎,它可以什么呢?哎,可以接收我们这什么呀?哎,接收我们这个叫做。其他的叫做一个关键字参数啊,关键字参数它会接收所有的你没有定义的,比如说你这儿,你现在来看,我这里边是没有定义BDC啊,所以这些关键的参数都会被这个A接收啊,都会被这个加两个星号的接收啊,它为什么呢?它会将这些参数,哎统一,哎保存到一个什么呀?哎保存到一个字典中啊字典中那我们说了,字典的K就是我们这个参数的一个什么呀,名字啊,字典的K就是参数名字字的这个值,哎就是我们这个参数的一个什么呀?哎,值啊,字典的value吧,哎,我们都统一写英语啊,字典的Y6就是我们参数的一个值,所以这时候你看K是BY6是不是一啊,K是DY6是二二,K是CY6是不是就是一个三呀?哎,这就是它的一个特点啊,这个是我们这个两个星号的一个参数啊,两个星号一个参数,那注意了,我们这个星星这个。
17:47
的型态。行三它只能什么呀,也是只能有一个,并且它必须,哎写在我们这个所有什么呀,哎所有参数的什么最后啊,所有参数最后,它必须也是最后一个,比如说你前面还有什么呀,你有B,你这有B呢,还有一个C都有了,这个一定得是什么呀,一定得是最后一个啊,一定得是最后一个啊,这1.1定要注意,这时候写上了我这一调干嘛了?哎,你看D是二,然后A等于D2,你看D给我找着了,但是B和C是不是由于有型仓了,他就给我分配过去了,哎分过去他只是负责什么呀,没有形参的这个十参啊,没有形参的这个十参,那我就可以再写一个啊,来一个这个E等于一个十,然后F等于一个20,那这时候我们来统一打印一下啊,再来一个什么呢?来一个B等于。
18:44
来一个B,然后这再来什么呢?来一个这个C,等于我这来一个这个C,这一保存,哎,你看B等于一,C等于三,剩下的DEF都没有,是不是就保存到一个字典里了,哎,保存到一个字典里啊好,那这个是我们说的一个,哎不定长的一个参数啊两种一个是星号的,专门干嘛呀,处理这种位置参数的啊,按顺序传的位置参数的,还有一种是我们这种什么呀,星星的A,它是专门处理什么呀?哎,处理这种关键字参数啊关键参数了,好,这也是我们说的一个不定长的一个参数啊,把这个东西好好的去看一下,我们这里先停一下。
我来说两句