01. 函数定义与参数
函数是可重用的代码块。Python 函数支持多种参数类型:位置参数、默认参数、关键字参数、可变参数。
python
# 基本函数
def greet(name):
return f"Hello, {name}!"
# 默认参数
def power(base, exp=2):
return base ** exp
# 多返回值
def divide(a, b):
return a // b, a % b
quotient, remainder = divide(17, 5)
# 类型提示
def add(a: int, b: int) -> int:
return a + b02. *args 与 **kwargs
*args 用于接收任意数量的位置参数,在函数内部表现为元组。**kwargs 用于接收任意数量的关键字参数,在函数内部表现为字典。
python
# *args
def sum_all(*args):
return sum(args)
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")
# 混合使用
def create_user(name, age, **extra):
user = {"name": name, "age": age}
user.update(extra)
return user03. 装饰器
装饰器是一种设计模式,用于在不修改原函数的情况下为函数添加额外功能。装饰器本质上是一个接收函数并返回函数的高阶函数。
python
import time
from functools import wraps
def timer(func):
@wraps(func)
def wrapper(*args, **kwargs):
start = time.time()
result = func(*args, **kwargs)
end = time.time()
print(f"{func.__name__} 执行时间: {end - start:.4f}s")
return result
return wrapper
@timer
def slow_function():
time.sleep(1)
return "完成"
slow_function()
# 带参数的装饰器
def repeat(n):
def decorator(func):
@wraps(func)
def wrapper(*args, **kwargs):
for _ in range(n):
result = func(*args, **kwargs)
return result
return wrapper
return decorator
@repeat(3)
def say_hello():
print("Hello!")
say_hello()使用 functools.wraps 保留原函数的元信息。
知识测验
第 1/4 题正确 0
*args 和 **kwargs 的区别是什么?
下一节
下一节 面向对象编程