本文目录导读:

我来从最基础开始,系统地介绍Python函数定义的相关案例。
最简单的函数定义
无参数无返回值
# 最基本的函数
def greet():
print("Hello, World!")
# 调用函数
greet() # 输出: Hello, World!
有参数无返回值
def greet_person(name):
print(f"Hello, {name}!")
greet_person("小明") # 输出: Hello, 小明!
有返回值的函数
计算并返回值
def add(a, b):
return a + b
result = add(3, 5)
print(result) # 输出: 8
# 也可以直接使用
print(add(10, 20)) # 输出: 30
多个返回值
def get_min_max(numbers):
return min(numbers), max(numbers)
min_val, max_val = get_min_max([3, 1, 7, 2, 9])
print(f"最小值: {min_val}, 最大值: {max_val}")
# 输出: 最小值: 1, 最大值: 9
参数类型详解
默认参数
def power(base, exp=2):
"""计算base的exp次方,默认计算平方"""
return base ** exp
print(power(5)) # 输出: 25 (5的平方)
print(power(5, 3)) # 输出: 125 (5的立方)
关键字参数
def introduce(name, age, city):
print(f"大家好,我是{name},今年{age}岁,来自{city}")
# 位置参数
introduce("张三", 25, "北京")
# 输出: 大家好,我是张三,今年25岁,来自北京
# 关键字参数(顺序可以不同)
introduce(city="上海", name="李四", age=30)
# 输出: 大家好,我是李四,今年30岁,来自上海
可变参数
# *args 可以接收任意数量的位置参数
def sum_all(*numbers):
total = 0
for num in numbers:
total += num
return total
print(sum_all(1, 2, 3, 4, 5)) # 输出: 15
print(sum_all(10, 20)) # 输出: 30
# **kwargs 可以接收任意数量的关键字参数
def print_info(**info):
for key, value in info.items():
print(f"{key}: {value}")
print_info(name="小明", age=18, grade="高一")
# 输出:
# name: 小明
# age: 18
# grade: 高一
实际应用案例
案例1:计算器函数
def calculator(num1, num2, operator):
"""基础计算器"""
if operator == "+":
return num1 + num2
elif operator == "-":
return num1 - num2
elif operator == "*":
return num1 * num2
elif operator == "/":
if num2 != 0:
return num1 / num2
else:
return "除数不能为0"
else:
return "不支持的运算符"
# 测试
print(calculator(10, 5, "+")) # 输出: 15
print(calculator(10, 5, "-")) # 输出: 5
print(calculator(10, 5, "*")) # 输出: 50
print(calculator(10, 5, "/")) # 输出: 2.0
案例2:用户验证函数
def login_check(username, password):
"""简单的登录验证"""
# 假设的用户数据库
users = {
"admin": "123456",
"user1": "abc123"
}
if username in users:
if users[username] == password:
return "登录成功"
else:
return "密码错误"
else:
return "用户名不存在"
# 测试
print(login_check("admin", "123456")) # 输出: 登录成功
print(login_check("admin", "123")) # 输出: 密码错误
print(login_check("guest", "123")) # 输出: 用户名不存在
案例3:数据处理函数
def process_student_scores(scores):
"""处理学生成绩,返回统计信息"""
if not scores:
return "没有成绩数据"
average = sum(scores) / len(scores)
highest = max(scores)
lowest = min(scores)
# 分级
if average >= 90:
grade = "优秀"
elif average >= 80:
grade = "良好"
elif average >= 70:
grade = "中等"
elif average >= 60:
grade = "及格"
else:
grade = "不及格"
return {
"平均分": average,
"最高分": highest,
"最低分": lowest,
"等级": grade
}
# 测试
scores = [85, 92, 78, 95, 88]
result = process_student_scores(scores)
print(result)
# 输出: {'平均分': 87.6, '最高分': 95, '最低分': 78, '等级': '良好'}
案例4:递归函数
def factorial(n):
"""计算阶乘(递归方式)"""
if n == 0 or n == 1:
return 1
else:
return n * factorial(n - 1)
def fibonacci(n):
"""计算斐波那契数列第n项"""
if n <= 0:
return 0
elif n == 1:
return 1
else:
return fibonacci(n-1) + fibonacci(n-2)
# 测试
print(factorial(5)) # 输出: 120 (5*4*3*2*1)
print(fibonacci(10)) # 输出: 55
函数文档字符串(Docstring)
def calculate_bmi(weight, height):
"""
计算BMI指数
Parameters:
weight (float): 体重(公斤)
height (float): 身高(米)
Returns:
float: BMI指数
str: 体重状态描述
"""
bmi = weight / (height ** 2)
if bmi < 18.5:
status = "偏瘦"
elif bmi < 24:
status = "正常"
elif bmi < 28:
status = "偏胖"
else:
status = "肥胖"
return bmi, status
# 查看函数文档
help(calculate_bmi)
# 使用函数
bmi, status = calculate_bmi(70, 1.75)
print(f"BMI: {bmi:.2f}, 状态: {status}")
# 输出: BMI: 22.86, 状态: 正常
函数高级特性
Lambda匿名函数
# 简单的lambda函数
square = lambda x: x ** 2
print(square(5)) # 输出: 25
# 在排序中使用
students = [
{"name": "张三", "score": 85},
{"name": "李四", "score": 92},
{"name": "王五", "score": 78}
]
# 按成绩排序
students.sort(key=lambda s: s["score"], reverse=True)
print(students)
# 输出: [{'name': '李四', 'score': 92}, {'name': '张三', 'score': 85}, {'name': '王五', 'score': 78}]
基础函数定义的步骤:
- 使用
def关键字 - 函数名(建议使用有意义的名称)
- 参数列表(可以为空)
- 函数体(缩进)
- 可选:返回值(使用
return)
建议从简单的例子开始练习,逐步掌握各种参数类型和函数特性。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播