函数
函数是组织代码的基本单位。本章覆盖 Python 函数的完整用法。
1. 定义与调用
def greet(name):
return f"Hello, {name}!"
msg = greet("Alice")
print(msg)def greet(name):
return f"Hello, {name}!"
print(greet("Alice"))
print(greet("Bob"))2. 默认参数
def power(x, n=2):
return x ** n
print(power(3)) # 9
print(power(3, 3)) # 27
print(power(3, n=4)) # 81 关键字参数⚠️默认参数的可变对象陷阱
不要用 def f(x, items=[]): —— 默认值在函数定义时只创建一次,列表会被共享。应该用 def f(x, items=None): if items is None: items = []。
3. 多返回值
Python 函数可以一次返回多个值(实际是返回一个元组)。
def divmod(a, b):
return a // b, a % b
q, r = divmod(17, 5)
print(f"17 ÷ 5 = {q} 余 {r}")4. *args 与 **kwargs
*args:接收任意数量的位置参数,打包成元组**kwargs:接收任意数量的关键字参数,打包成字典
def avg(*nums):
return sum(nums) / len(nums) if nums else 0
print(avg(1, 2, 3, 4, 5)) # 3.0
print(avg(10, 20)) # 15.0
def user_profile(name, **info):
print(f"姓名:{name}")
for k, v in info.items():
print(f" {k}: {v}")
user_profile("小明", age=18, city="北京", hobby="编程")5. lambda 匿名函数
lambda 参数: 表达式 创建一个匿名的简单函数。
square = lambda x: x * x
print(square(5)) # 25
# 配合 sorted 的 key 参数
pairs = [("Alice", 30), ("Bob", 25), ("Carol", 28)]
pairs.sort(key=lambda p: p[1]) # 按年龄排序
print(pairs)6. 递归函数
def fib(n):
if n < 2:
return n
return fib(n - 1) + fib(n - 2)
for i in range(10):
print(fib(i), end=" ")
print()💡递归的两个关键
① 终止条件(base case);② 递归调用向终止条件推进。否则会无限递归导致 RecursionError。
7. 文档字符串(docstring)
def area(r):
"""计算圆的面积。"""
return 3.14159 * r * r🎯 练习
# 任务:用递归实现阶乘 n!
# 期望:factorial(5) = 120
def factorial(n):
# 补全代码
pass
print(factorial(5))
print(factorial(0))
print(factorial(10))小结
- ✅
def 函数名(参数):定义函数 - ✅ 默认参数、关键字参数、位置参数
- ✅
return可以返回多个值(解包) - ✅
*args收多余位置参数;**kwargs收多余关键字参数 - ✅
lambda适合写一行的小函数 - ✅ 递归必须有终止条件
- ✅ 三引号字符串写文档(docstring)
下一章 数据结构:list / tuple / dict / set。