第六章:函数
定义函数
# 基本函数
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 # 修改全局变量