一、函数定义函数是组织好的、可重复使用的代码块用于执行特定任务。它可以将复杂问题分解为小模块提高代码的可读性、复用性和可维护性。定义def 函数名(): 函数体调用函数名()二、函数参数形参 函数定义时括号中的占位符 像变量名等待被赋值 实参 函数调用时传入的具体值 像实际数据传给形参使用def my_print(start, stop,msg): :param start: 开始 :param stop: 结束 :param msg: 打印信息 for i in range(start, stop): print(i, msg) my_print(1, 6 , 困) my_print(1, 10 ,不困)三、参数的类型1. 位置参数按位置顺序传入数量必须匹配。#位置参数 def can(msg, n): for i in range(n): print(msg) can(醒醒,10)2. 关键字参数调用时用参数名值的方式指定顺序可变。#关键字参数 def can(msg, n): for i in range(n): print(msg) can(吃饭,n2) can(n2,msg吃饭)3. 默认参数定义时赋值调用时可传可不传。#默认参数 def can(msg睡觉, n 3): for i in range(n): print(msg) can() can(msg困) can(n2)4. 可变位置参数*args接收任意多个位置参数打包为元组。# 可变位置参数 *args # 接收任意多个位置参数打包为元组。 def my_print(*args, **kwargs): print(args) print(kwargs) my_print(1,2,3,4,5,a 10, b 20, c30)5. 可变关键字参数**kwargs接收任意多个关键字参数打包为字典。def my_print(a,b1,*args,**kwargs): print(a,b) print(args) print(kwargs) my_print(b2,a2) my_print(1,2,123,456,d3,e2,f1)6.解包将包拆开使内部数据与参数对应# 解包 要一一对应 def add(a, b, c): return a b c datas [10, 20, 30] print(add(*datas)) def greet(name, age): print(f{name} 今年 {age} 岁) data { name: 小明, age: 20 } greet(**data)四、lambda 表达式匿名函数lambda是 Python 中的匿名函数关键字用于创建一行表达式的简单函数。它没有函数名用完后即释放。# 定义一个没有形参 没有返回值的匿名函数 f2 lambda: print(888) print(type(f2), f2.__name__) f2()# 定义一个没有形参 有返回值的匿名函数 f3 lambda: (100, 200, 300) print(type(f3), f3.__name__) print(f3())# 定义有形参 有返回值的匿名函数 f4 lambda x: x 100 print(f4(50))print((lambda x, y, z: x y z)(10, 20, 30))