跳转至

第六章:函数

定义函数

# 基本函数
def greet(name):
    """问候函数"""
    return f"Hello, {name}!"

print(greet("Alice"))

# 无返回值函数
def print_info(name, age):
    print(f"Name: {name}, Age: {age}")

参数类型

# 位置参数
def add(a, b):
    return a + b

# 默认参数
def greet(name, greeting="Hello"):
    return f"{greeting}, {name}!"

# 关键字参数
def person_info(name, age, city="Unknown"):
    return f"{name}, {age}, {city}"

print(person_info(age=25, name="Alice"))

# 可变参数 *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 square(x):
    return x ** 2

# 多返回值
def get_info():
    return "Alice", 25, "Beijing"

name, age, city = get_info()

# 返回字典
def build_person(name, age):
    return {"name": name, "age": age}

Lambda 表达式

# 匿名函数
square = lambda x: x ** 2
add = lambda a, b: a + b

# 常用于高阶函数
numbers = [1, 2, 3, 4, 5]
squared = list(map(lambda x: x**2, numbers))
evens = list(filter(lambda x: x % 2 == 0, numbers))

装饰器

# 定义装饰器
def timer(func):
    import time
    def wrapper(*args, **kwargs):
        start = time.time()
        result = func(*args, **kwargs)
        print(f"耗时: {time.time() - start:.2f}s")
        return result
    return wrapper

@timer
def slow_function():
    import time
    time.sleep(1)
    return "Done"

作用域

x = 10  # 全局变量

def func():
    x = 5   # 局部变量
    print(x)  # 5

def func2():
    global x
    x = 20  # 修改全局变量