ToolkitX
知识库工具箱

函数与模块

函数定义、装饰器、模块导入

25min·进阶

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 + b

02. *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 user

03. 装饰器

装饰器是一种设计模式,用于在不修改原函数的情况下为函数添加额外功能。装饰器本质上是一个接收函数并返回函数的高阶函数。
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 的区别是什么?

下一节

面向对象编程

下一节