清理库存2~
有时候面试时会被问到一些细节问题,还是把琐碎的知识点有必要总结整理一下。
9、 函数
9.1 定义函数
在使用函数之前必须先定义(声明)函数,然后才能调用它。使用关键字def 定义函数,语法格式如下:
def 函数名 (参数列表):
<函数语句>
return 返回值
其中,参数列表和返回值不是必需的。如果return 后没有返回值,也没有return 语句,这样的函数会返回None值。使用缩进以语句表示函数体。
【注意】:当函数没有参数时,包含参数的圆括号也必须写上,圆括号后也必须有冒号“:”。
与C语言相比,在python 中声明一个函数不需要声明函数的返回值类型,也不需要声明参数的类型。
调用函数:
函数的参数:
在调用某个函数时,可以向其传递参数,也可以不传递参数,但都不影响函数的使用。
python中,有必须参数、关键字参数、默认参数、不定长参数。
(a)关键字参数
在使用关键字参数时,允许在调用函数时参数的顺序与声明时不一致,因为python解释器能够使用参数名匹配参数值。输出的顺序与形参顺序保持一致。
如果没有传递参数,则使用默认参数。
此外,可选参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple。而关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。
默认参数一定要用不可变对象,如果是可变对象,程序运行时会有逻辑错误!
要注意定义可变参数和关键字参数的语法:
*args是可变参数,args接收的是一个tuple,此种情况类似于不定长参数;
**kw是关键字参数,kw接收的是一个dict。
(b)默认参数
在函数定义时给定一个初始值,在函数调用时可以不传这个参数,采用默认参数的值;下例中的age就是默认参数;
如果在声明一函数时,其参数列表中既包含无默认值的参数,又包含有默认值的参数,那么,在声明函数的参数时,必须先声明无默认值的参数,后声明有默认值的参数。
(c)不定长参数
在python中,可能需要一个函数能处理比当初声明时更多的参数,这些参数叫“不定长参数”。不定长参数也叫可变参数。
在自定义函数时,如果在参数名前加上一个星号“*”,则表示该参数就是一个可变长参数。
在调用该函数时,如果依次序将所有的其他变量都赋予值之后,剩下的参数将会收集在一个元组中,元组的名称就是前面带星号的参数名。
(d)可选参数
如下面例子中,如果实参个数少于等于形参个数,为了使程序正确运行,需要给“缺失”的实参指定一个默认值:空字符串,并且可以提供也可以不提供这个实参。
也即:可选参数要在形参中指定一个空字符串的默认值。