Python 入门 09 —— 自定义函数、lambda表达式

一、定义

1、Python 语言定义函数的格式为:

def 函数名(参数):
    函数体

2、函数体的结束语句是: return 返回值。缺省为:return None,即函数缺省返回 None 。

3、Python 中函数是对象。对象能做的事,函数都可以做。

4、函数可以嵌套,即在函数内还可以再定义函数,例如:

def 函数一(参数1):
    函数体一

    def 函数二(参数2):
        函数体二


def 函数名(参数):
    函数体

二、位置参数、默认参数、关键字参数

参数可以有缺省值,也可以没有缺省值。有缺省值的参数必须在排在最右边。因为没有缺省值的参数在函数调用时,是按照位置来一一对应赋值的,所以又称为“位置参数”,有缺省值的参数,又称为“默认参数”。例如:

def fun(x,y,a=10,b=20): print(x+y+a+b)
fun(1,2,3) # 26

当函数调用时用“参数 = 值”的形式给参数赋值,这样的参数被称为“关键字参数”。因为python 运行程序在解析参数时, 是按照顺序来的, 位置参数先满足, 然后才能考虑其它参数,所以,关键字参数的赋值必须跟随在位置参数后面,也就是,位置参数必须在前,关键字参数必须在后,否则会报错。不过,关键字参数之间,因为已经指定了参数名,不会混淆,所以,它们相互之间位置可随意。例如:

def fun(x,y,a=10,b=20): print(x+y+a+b)
fun(1,2,b=5,a=6) # 14

三、可变长参数
1、可变长位置参数

def 函数名(* p):
    函数体

当形数前面有一个星号 “*” 时,说明这部分参数是可多可少的。在实际调用函数时,以这个位置上的所有实参为元素组成一个元组赋给 p。例如:

def fun(x,y,*z):print(x,y,z,len(z))    # 第1、2个实参将分别赋给 x,y,剩余的实参组成元组赋给 z

fun(1,2,5,5,5,5,5,5)    # 22 33 (5, 5, 5, 5, 5, 5) 6

2、可变长关键字参数

def 函数名(** d):
    函数体

当形数前面有二个星号 “**” 时,说明这部分参数也是可多可少的,并且是以“参数 = 值”的形式给形数赋值。在实际调用函数时,以这个位置上的所有“参数:值”对为元素组成一个字典赋给 d。例如:

def fun(x,y,*z,**v): print(x,y,z,len(z),v,len(v))    #  第1、2给 x、y,所有关键字部分给 v,剩余的全给 z
fun(22,33,5,5,5,5,5,5,a=61,b=62,c=63)    # 22 33 (5, 5, 5, 5, 5, 5) 6 {'a':61, 'b':62, 'c':63} 3

四、解包赋值
解包赋值,是指在实际调用函数时,在一个可迭代对象前加一个星号 “*”作为实参传递给函数,由函数在运行前自行解包,分别取出可迭代对象的元素给形参赋值。可迭代对象的元素个数与函数的形参个数必须相等,否则会报错。例如:

def fun(x,y,z,a,b,c): print(x,y,z,a,b,c)
lst = (11,12,13,14,15,16); fun(*lst)    # 11 12 13 14 15 16

五、lambda 表达式
lambda 是第十一位希腊字母“兰木达”的英语名称。lambda 表达式用于声明匿名函数,即没有函数名的、临时使用的小函数。也就是说,如果一个函数的功能很简单,且是临时用一下,就可以用 lambda 表达式来替代。例如:

fff = lambda x, y : x + y    # 相当于:def fff(x,y): return x + y
print(fff(2,3))    # 5

———————————————— 本篇完 ————————————————

看完之后,麻烦您顺手点击下方 “点赞” 两个字给我点个赞吧 ^-^ , 谢谢您了。

如果您还能像我小学一年级班主任好老师那样,给我随心写上几句表扬或批评的话语,那真是感激不尽!

在我人生的道路上,有了您的鼓励和指导,我一定成长快快。

发布了28 篇原创文章 · 获赞 6 · 访问量 2280

猜你喜欢

转载自blog.csdn.net/Jeff888999/article/details/103944260
今日推荐