




本文讲解如何在 python 中让一个函数生成的
数据被另一个函数安全访问和修改,重点介绍返回值传递、引用传递机制及常见误区。
在 Python 中,函数之间不能直接访问彼此的局部变量。例如,func1 内部重新赋值 my_list = [...] 并不会影响调用时传入的原始列表(因为该赋值操作只是改变了局部变量 my_list 的绑定对象),而 func2 也无法凭空获取 func1 创建的数据——除非通过明确的数据传递机制。
✅ 正确做法是:让 func1 返回所需数据,再将返回值作为参数传给 func2。这是最清晰、可维护且符合 Python 哲学的方式:
def func1(my_list, test1, test2):
# 注意:此处创建新列表并返回,不依赖输入参数 my_list
return [{'name': 'Saeed', 'id': 1}, {'name': 'David', 'id': 2}]
def func2(data_list):
if data_list: # 防御性检查
data_list[0]['id'] += 1
# 使用示例
result = func1([], 1, 2) # 获取 func1 生成的数据
func2(result) # 修改第一个元素的 id
func2(result) # 再次修改
print(result) # 输出: [{'name': 'Saeed', 'id': 3}, {'name': 'David', 'id': 2}]⚠️ 关键注意事项:
总结:Python 函数间通信应以显式返回 + 显式传参为基本原则。既保障逻辑清晰、易于调试,也符合函数式编程中“输入→处理→输出”的设计范式。