字数 1024,阅读大约需 6 分钟
Python函数全解析 🚀
📌 你是否写过重复、低效的代码?📌 你真的理解函数参数的用法吗?📌 lambda 表达式如何让代码更简洁?
今天,我们用清晰讲解 + 实战案例 + 高效技巧,帮你彻底掌握 Python 函数!
🔥 1. 为什么要用函数?
函数的作用:封装代码,提高复用性,减少重复,提高可读性。
🔹 没有函数,代码可能会很冗长:
print("欢迎 Alice!")print("欢迎 Bob!")print("欢迎 Charlie!")
⬇️ 使用函数,代码更优雅:
defgreet(name):print(f"欢迎 {name}!")greet("Alice")greet("Bob")greet("Charlie")
✅ 减少重复,提高代码质量!
🛠️ 2. 如何定义函数?
Python 使用 def 关键字定义函数:
def函数名(参数): 代码块return 返回值
📌 示例:计算两个数的和
defadd(a, b):return a + bresult = add(3, 5)print(result) # 输出 8
✅ return 返回结果,默认返回 None!
🎯 3. 深入理解函数参数
Python 函数支持多种参数传递方式,让代码更灵活!
🟢 位置参数(Positional Arguments)
按照 参数顺序 传递:
defgreet(name, age):print(f"{name} 今年 {age} 岁")greet("Alice", 25) # ✅ 正确greet(25, "Alice") # ❌ 参数顺序错误
✅ 顺序重要,必须一一对应!
🟢 关键字参数(Keyword Arguments)
显式指定参数名,不受顺序影响:
greet(age=25, name="Alice") # ✅ 直接指定参数
✅ 提高可读性,避免顺序错误!
🟢 默认参数(Default Arguments)
给参数设置默认值,可选传参:
defgreet(name, age=18): # 默认 age=18print(f"{name} 今年 {age} 岁")greet("Bob") # Bob 今年 18 岁greet("Alice", 25) # Alice 今年 25 岁
✅ 减少调用时的参数传递,提高灵活性!
🟢 可变参数:*args(任意个位置参数)
适用于 不确定数量的参数:
defadd(*numbers):returnsum(numbers)print(add(1, 2, 3)) # 输出 6print(add(10, 20, 30, 40)) # 输出 100
✅ 所有参数会打包成元组 args,可按需处理!
🟢 关键字可变参数:**kwargs(任意个键值对参数)
适用于 不定数量的命名参数:
definfo(**kwargs):for key, value in kwargs.items():print(f"{key}: {value}")info(name="Alice", age=25, city="Beijing")
✅ kwargs 以字典形式存储,适用于动态参数!
🔄 4. return 语句的妙用
函数可以返回单个值、多值或 None。
🟢 返回单个值
defsquare(x):return x ** 2print(square(4)) # 输出 16
✅ return 结束函数并返回值!
🟢 返回多个值
defget_user():return"Alice", 25# 返回元组name, age = get_user()print(name, age) # Alice 25
✅ 可以用多个变量接收,简洁方便!
🟢 return 省略的情况
如果 return 省略,函数默认返回 None:
defsay_hello():print("Hello!")print(say_hello()) # 输出 Hello!,但返回 None
✅ 如果不需要返回值,可省略 return!
⚡ 5. lambda 表达式:一行代码实现函数!
lambda 是 匿名函数,适用于 简单操作,格式:
lambda 参数: 返回值
🟢 示例 1:快速计算平方
square = lambda x: x ** 2print(square(4)) # 输出 16
🟢 示例 2:排序时自定义规则
students = [("Alice", 25), ("Bob", 20), ("Charlie", 23)]students.sort(key=lambda x: x[1]) # 按年龄排序print(students)
✅ lambda 适用于简短逻辑,但不适合复杂操作!
🤔 6. lambda VS def,该用哪个?
| lambda | def |
| | |
| 简单操作 | 复杂逻辑 |
| 一行代码 | 多行代码 |
✅ 简单操作 → lambda✅ 复杂逻辑 → def
🚀 7. 进阶技巧,让函数更强大!
🔹 1. 函数嵌套
defouter():definner():print("我是内部函数") inner()outer()
✅ 函数可以嵌套,隐藏内部逻辑!
🔹 2. 闭包(Closure)
defouter(x):definner(y):return x + yreturn inneradd_5 = outer(5) # add_5 是一个新函数print(add_5(10)) # 输出 15
✅ 闭包可以保存外部变量,提升灵活性!
🎉 8. 结语
🎯 掌握函数,让代码更简洁、灵活、可复用!🚀 你最喜欢哪种函数写法?欢迎讨论!