Python函数中变量仅本地修改,如何实现全局变更?
解决final_list全局变更的方法
要让函数修改后的final_list在全局生效,核心是避免函数内创建局部的final_list变量,具体分两种场景处理:
场景1:函数内需要修改列表内容(而非重新赋值整个列表)
如果只是给列表添加、删除元素,或者修改已有元素,直接对原列表做原地修改即可,不需要额外声明:
final_list = [] def update_list(): # 原地修改全局列表,不会创建局部变量 final_list.append(1) final_list.extend([2, 3]) print(final_list) # 函数内打印 [1,2,3] update_list() print(final_list) # 全局打印 [1,2,3]
场景2:函数内需要重新赋值整个列表
如果必须替换整个列表(比如直接给final_list赋值新的列表对象),需要在函数开头用global声明该变量是全局变量:
final_list = [] def reset_list(): global final_list # 声明使用全局的final_list final_list = [1, 2, 3] # 直接修改全局变量 print(final_list) # 函数内打印 [1,2,3] reset_list() print(final_list) # 全局打印 [1,2,3]
注意事项
- 优先使用原地修改的方式,
global声明会降低代码可读性,增加维护难度; - 如果函数内直接写
final_list = 新列表,会自动创建一个局部变量,和全局的final_list完全无关,这就是你遇到的问题根源。
内容的提问来源于stack exchange,提问作者Srinjoy Sarkar
相关产品推荐
相关产品推荐

