Python3 的函数
在Python中,函数使用 def 关键字来声明。
1. 基本函数声明
最简单的函数
def say_hello():
"""这是一个简单的问候函数"""
print("Hello, World!")
# 调用函数
say_hello() # 输出: Hello, World!
带参数的函数
def greet(name):
"""带一个参数的函数"""
print(f"Hello, {name}!")
# 调用函数
greet("Alice") # 输出: Hello, Alice!
greet("Bob") # 输出: Hello, Bob!
2. 不同类型的参数
位置参数
def introduce(name, age, city):
"""带多个位置参数的函数"""
print(f"我叫{name},今年{age}岁,来自{city}")
# 调用时按顺序传递参数
introduce("张三", 25, "北京")
默认参数
def greet_person(name, greeting="Hello"):
"""带默认参数的函数"""
print(f"{greeting}, {name}!")
# 调用方式
greet_person("Alice") # 输出: Hello, Alice!
greet_person("Bob", "Hi") # 输出: Hi, Bob!
greet_person("Charlie", greeting="Hey") # 输出: Hey, Charlie!
关键字参数
def create_profile(name, age, city, country="中国"):
"""使用关键字参数"""
print(f"姓名: {name}, 年龄: {age}, 城市: {city}, 国家: {country}")
# 调用时可以指定参数名,顺序可以改变
create_profile(age=25, city="上海", name="李四")
create_profile("王五", city="广州", age=30, country="中国")
3. 返回值
返回单个值
def add(a, b):
"""返回两个数的和"""
return a + b
result = add(5, 3)
print(result) # 输出: 8
返回多个值
def calculate(a, b):
"""返回多个值(实际上返回一个元组)"""
sum_result = a + b
difference = a - b
product = a * b
quotient = a / b if b != 0 else None
return sum_result, difference, product, quotient
# 接收多个返回值
s, d, p, q = calculate(10, 5)
print(f"和: {s}, 差: {d}, 积: {p}, 商: {q}")
4. 各种函数示例
使用 *args 接收可变参数
def sum_all(*args):
"""计算任意数量数字的和"""
total = 0
for num in args:
total += num
return total
print(sum_all(1, 2, 3)) # 输出: 6
print(sum_all(1, 2, 3, 4, 5)) # 输出: 15
使用 **kwargs 接收关键字参数
def print_info(**kwargs):
"""打印任意关键字参数"""
for key, value in kwargs.items():
print(f"{key}: {value}")
print_info(name="Alice", age=25, city="Beijing")
# 输出:
# name: Alice
# age: 25
# city: Beijing
5. 函数调用方式
直接调用
def multiply(x, y):
return x * y
result = multiply(4, 5)
print(result) # 输出: 20
嵌套调用
def square(x):
return x * x
def sum_of_squares(a, b):
return square(a) + square(b)
result = sum_of_squares(3, 4)
print(result) # 输出: 25
作为参数传递
def apply_operation(x, y, operation):
"""将函数作为参数传递"""
return operation(x, y)
def add(a, b):
return a + b
def multiply(a, b):
return a * b
print(apply_operation(5, 3, add)) # 输出: 8
print(apply_operation(5, 3, multiply)) # 输出: 15
6. Lambda函数(匿名函数)
# 简单的lambda函数
square = lambda x: x ** 2
print(square(5)) # 输出: 25
# 在排序中使用
students = [("Alice", 85), ("Bob", 92), ("Charlie", 78)]
sorted_students = sorted(students, key=lambda x: x[1])
print(sorted_students) # 按分数排序
7. 实际应用示例
def calculate_bmi(weight, height):
"""
计算BMI指数
参数:
weight -- 体重(kg)
height -- 身高(m)
返回:
BMI值和健康状态
"""
bmi = weight / (height ** 2)
if bmi < 18.5:
status = "偏瘦"
elif bmi < 24:
status = "正常"
elif bmi < 28:
status = "超重"
else:
status = "肥胖"
return round(bmi, 2), status
# 调用函数
bmi, status = calculate_bmi(70, 1.75)
print(f"BMI: {bmi}, 状态: {status}")
关键要点总结:
- 声明: 使用
def 函数名(参数): - 调用: 使用
函数名(参数) - 返回值: 使用
return语句 - 文档: 使用三引号添加文档字符串
- 参数: 可以有位置参数、默认参数、可变参数等