默认参数:定义函数的时候给定变量一个默认值。 def num(age=1): 位置参数:调用函数的时候根据定义函数时的形参位置和实参位置进行引用。 关键字参数:如果定义的函数中含有关键字参数,调用函数时必须要传如该关键字对应的实参。 不定长参数:在定义函数的时候不确定传入的参数的数量(可能是0个或多个) def num(*args,**args): (不定长参数的标志符号是*和**,args和kwargs只是变量的名字,可以改为任意的变量如(*num,**kwnum)) *+变量名1,可以接受被其他参数接受后剩下的任意的形参(不包括赋值语句),放进一个元组里,这个元组的名字是前面的变量名1(所以位置参数必须在此参数之前) **+变量名2,可以接受被其他参数接受后剩下的任意赋值语句,放进一个字典中,这个字典的名字是前面的变量名2(所以关键字参数和默认参数必须在此参数之前,*+变量名也要在此参数之前) 测试上面的总结是否正确
最后总结 调用函数传递实参的时候,先传变量/定量,再传赋值语句(num_0(1,2,3,4,5,6,7,city='hangzhou',name='jack',age=18,country='haidian')) 定义函数的时候直接按此顺序定义形参(def num_0(a,b,c,*args,city='beijing',name,**kwnum):)(位置参数,*变量名,默认参数,关键字参数,**变量名) 接下来讨论一下不定长参数中的 * 和 ** 还有什么用处 1,当在函数的形参中使用时(和上面的例子相同) **t:将所有的其他位置的实参(赋值语句)获取,并将它们打包到字典中,并赋值给此参数 2,当在调用函数的时候使用(实参中) 1,2 **dict_a:将字典中的键值对,当做函数调用的关键字参数 1,2 3,在匹配和for循环中 >>>x, *xs = (1, 2, 3, 4)>>>xs[2, 3, 4] >>>x, *xs = [1, 2, 3, 4]>>>xs[2, 3, 4] >>> *xs, x = (1, 2, 3, 4) >>> xs [1, 2, 3] >>> x 4 >>> x, *xs, y = (1, 2, 3, 4) >>> x 1 >>> xs [2, 3] >>> y 4 4,可以用于合并字典 *t 表示“获取此函数的所有其他位置参数,并将它们作为元组打包到此参数中
|
|
来自: LibraryPKU > 《Python》