如何在Python的while循环中保留初始传入的variable_1和variable_2的值
解决方案
你只需要在函数内部预先备份原始入参,每次循环开始时用备份重置变量即可,不需要硬编码值也不会污染全局作用域:
- 进入函数后先对初始入参做深拷贝备份,避免可变对象的引用关联导致备份被意外修改
- 每次while循环启动时,用备份的初始值重新赋值给本次循环使用的变量
- 循环内所有修改逻辑都针对本次循环的变量操作,始终不修改初始备份
代码实现示例
import copy def function(variable_1, variable_2): # 备份原始入参,深拷贝兼容所有可变/不可变类型 init_v1 = copy.deepcopy(variable_1) init_v2 = copy.deepcopy(variable_2) switch = True while switch: # 每次循环开头重置为原始值 run_v1 = copy.deepcopy(init_v1) run_v2 = copy.deepcopy(init_v2) # 以下原有逻辑全部替换为操作run_v1、run_v2 inner_function(run_v1, run_v2) # 原有数据结构转换逻辑 # ... # 原有判断条件 if 你的判断条件: switch = False return run_v1, run_v2
如果你的两个变量确定是数值、字符串、元组这类不可变类型,可以把copy.deepcopy换成直接赋值,能省一点性能,用深拷贝是兼容性最强的写法,不需要额外判断变量类型。
这个方案的改动量极小,你不需要调整原有函数的核心逻辑,只需要加两行备份代码和循环开头的两行重置代码即可。
内容的提问来源于stack exchange,提问作者lonyen11
相关产品推荐
相关产品推荐

