Python 中函数是组织好的、可重复使用的代码块,用于实现单一或相关联的功能。下面是函数定义和使用的完整说明:
📌 一、函数定义语法
def 函数名(参数1, 参数2=默认值, *args, **kwargs):"""函数说明文档"""函数体return 返回值
✅ 二、简单示例
def greet(name):return f"Hello, {name}!"result = greet("Alice")
print(result) # 输出: Hello, Alice!
🔸 三、参数类型详解
1. 位置参数
def add(a, b):return a + bprint(add(3, 5)) # 输出 8
2. 默认参数
def greet(name, message="Hi"):return f"{message}, {name}!"print(greet("Tom")) # Hi, Tom!
print(greet("Tom", "Hello")) # Hello, Tom!
3. 可变参数 (*args
)
args是可以自己命名的,这里的类型是元组(tuple)
tuple的特点
def sum_all(*args):return sum(args)print(sum_all(1, 2, 3)) # 6
4. 关键字参数 (**kwargs
)
适用于字典类型的入参,kwargs是可以自己命名的,这里的类型是字典(dict)
def show_info(**kwargs):for key, value in kwargs.items():print(f"{key}: {value}")show_info(name="Alice", age=30)
# 输出:
# name: Alice
# age: 30
🔁 四、返回值
单值返回:
def square(x):return x * x
多值返回(返回元组):
def get_user():return "Tom", 25name, age = get_user()
♻️ 五、函数作为变量传递
def say_hello():print("Hello")greet = say_hello
greet() # Hello
📖 六、带文档的函数
def square(x):"""返回数字的平方"""return x * xprint(square.__doc__) # 返回函数说明文档
✅ 七、匿名函数(lambda)
square = lambda x: x * x
print(square(5)) # 25
常用于排序、过滤等场景:
nums = [3, 1, 2]
nums.sort(key=lambda x: -x)
🧠 八、函数的好习惯
- 使用明确的函数名和参数名
- 编写函数文档字符串(
"""说明文字"""
) - 尽量保持函数短小和单一职责
下面是几道精选的 Python 函数练习题,每道题都有题目说明和 提示,适合巩固函数的定义与使用。
🧪 练习题 1:写一个求最大值的函数
题目:编写一个函数 get_max(a, b)
,返回两个数中的最大值。
def get_max(a, b):# TODO: 返回较大的那个数passprint(get_max(10, 20)) # 应该输出 20
✅ 提示:使用 if...else
判断大小。
🧪 练习题 2:列表求和(可变参数)
题目:编写一个函数 sum_all(*args)
,接收任意数量的参数,并返回它们的总和。
def sum_all(*args):# TODO: 返回所有参数的总和passprint(sum_all(1, 2, 3)) # 输出 6
print(sum_all(5, 10, 15, 20)) # 输出 50
✅ 提示:使用 sum()
函数或 for
循环遍历 args
。
🧪 练习题 3:计算 BMI 指数
题目:写一个函数 bmi(weight, height)
,根据体重(kg)和身高(米)计算 BMI = 体重 / 身高²。
def bmi(weight, height):# TODO: 返回 BMI 指数passprint(bmi(60, 1.7)) # 应该输出大约 20.76
✅ 提示:BMI 的单位是 kg/m²,保留小数可用 round(bmi, 2)
。
🧪 练习题 4:欢迎语(带默认参数)
题目:定义一个函数 greet(name, message="Hello")
,默认打招呼用 “Hello”,可以自定义问候语。
def greet(name, message="Hello"):# TODO: 打印 message, name!passgreet("Tom") # Hello, Tom!
greet("Alice", "Hi") # Hi, Alice!
🧪 练习题 5:分析用户信息(关键字参数)
题目:定义函数 print_info(**kwargs)
,可以接受任意键值对,并打印它们。
kwargs也可以叫其他名字主要是前面有**标识
def print_info(**kwargs):# TODO: 遍历打印每一个 key: valuepassprint_info(name="Tom", age=22, city="Shanghai")
✅ 提示:用 for key, value in kwargs.items()
遍历。
可以尝试把这些函数写进一个 .py
文件里,比如 my_functions.py
python my_functions.py