公司动态

Python 函数完整学习笔记(包含匿名函数 lambda)

📅 2026/7/23 12:21:25
Python 函数完整学习笔记(包含匿名函数 lambda)
引言函数可以封装重复逻辑减少冗余代码提升复用性。本文系统梳理 Python 函数基础概念、五类参数、解包、匿名函数全部知识点配套可执行示例。一、函数基础概念核心目的减少代码编写提升代码复用效果。术语说明def关键字定义 / 声明函数调用函数函数名 ()触发执行形参形式参数定义函数时写在括号内的变量实参实际参数调用函数传入真实数据返回值return函数运算完成向外输出结果类比程序 输入 → 运算 → 输出函数 输入 → 运算 → 输出python运行# 1.定义函数 def def calc_add(a, b): # a,b 形参 res a b return res # 返回值 # 2.调用函数35是实参 result calc_add(3, 5) print(result)二、函数五大参数类型思维导图全覆盖1. 位置参数按照顺序依次赋值实参与形参顺序一一对应python运行def show(name, age): print(f姓名:{name},年龄:{age}) # 位置传参顺序不能乱 show(瓜瓜, 18)2. 关键字参数直接指定形参名称赋值不受顺序约束python运行def show(name, age): print(f姓名:{name},年龄:{age}) # 关键字传参 show(age16, name小明)3. 默认参数定义函数时形参设置默认值带默认的参数必须放在无默认参数后方python运行def show(name, age18): print(f姓名:{name},年龄:{age}) show(小红) # 不传入age自动使用默认值18 show(小红, 20) # 传入值覆盖默认值4. 不定参数可变参数可变元组参数*args接收任意多个位置实参打包为元组python运行def sum_all(*args): print(args) return sum(args) print(sum_all(1,2,3)) print(sum_all(1,2,3,4,5))可变字典参数**kwargs接收任意多个未定义关键字实参打包为字典python运行def print_info(**kwargs): print(kwargs) print_info(name瓜瓜, sex女, height165)三、列表、字典解包传参列表解包*把列表拆分依次作为位置实参python运行def show(a,b,c): print(a,b,c) lst [10,20,30] show(*lst)字典解包**把字典拆分作为关键字参数传入python运行def show(name,age): print(name,age) info {name:库洛米,age:16} show(**info)四、匿名函数 lambda普通 def 定义具名函数lambda 创建临时、无名称的匿名函数语法lambda 参数: 表达式限制只能书写单一表达式不能写多行代码。python运行# 示例1无参数匿名函数 f1 lambda: Hello Python print(f1()) # 示例2单个参数 f2 lambda x: x ** 2 print(f2(7)) # 49 # 示例3多个参数 f3 lambda a, b: a b print(f3(10, 25)) # 35 # 示例4参数带默认值 f4 lambda x, y10: x * y print(f4(3)) # 3*1030 print(f4(3, 5)) # 3*515 # 示例5三元表达式lambda内条件判断 # 返回较大值 max_num lambda a, b: a if a b else b print(max_num(56, 29)) # 示例6map() 批量转换列表 nums [1,2,3,4] res list(map(lambda x: x*3, nums)) print(res) # [3, 6, 9, 12] # 示例7filter() 筛选数据 nums [1,2,3,4,5,6,7,8] # 筛选偶数 res list(filter(lambda x: x % 2 0, nums)) print(res) # [2,4,6,8] # 示例8sorted 字典列表排序【重点面试高频】 student [ {name:瓜瓜, age:18}, {name:小明, age:16}, {name:小红, age:20} ] # 根据age升序 student.sort(keylambda x: x[age]) print(student) # 根据age降序 student.sort(keylambda x: x[age], reverseTrue) print(student) # 示例9获取元组指定元素排序 data [(5, 10), (2, 30), (8, 1)] # 使用第二个元素排序 data.sort(keylambda t: t[1]) print(data) # 示例10lambda作为函数返回值闭包简单演示 def make_adder(n): return lambda x: x n add5 make_adder(5) print(add5(10)) # 15⚠️重要注意事项lambda 内部不能使用循环、if 语句块只能用三元表达式python运行# 错误写法不允许 # bad lambda x: if x0: print(x)逻辑一旦复杂不要强行使用 lambda改用def定义普通函数可读性更高lambda 没有函数名报错时堆栈信息不易排查生产环境慎用超长 lambda。