如何以Pythonic风格处理变量交换?含循环场景代码示例
处理"当前值-新值"循环对比更新的常见场景
我在开发中经常碰到这样的典型场景:需要维护两个变量——一个用来记录某事物的当前值,另一个专门接收新获取的值。在循环流程里,每次都会先检查这两个值是否相等,根据结果执行对应的业务操作,之后把新值同步给当前值,再进入下一轮循环重复这个过程。
示例代码
下面是一个模拟该流程的代码片段,其中get_new()函数用来模拟从外部服务、数据库或其他数据源获取最新值的逻辑:
import time import random def get_new(): # 模拟从服务或其他来源获取新值 vals = [x for x in range(3)] return random.choice(vals) current = None while True: # 获取新值 new = get_new() if new != current: print('值发生变化了...') # 这里可以添加值变化后的自定义处理逻辑,比如更新UI、发送通知等 # 将新值设为下一次循环的当前值 current = new time.sleep(1) # 添加延迟,模拟实际场景中的轮询间隔
关键逻辑说明
- 初始化
current为None,保证第一次获取的新值一定会触发变化检测(因为None和任何实际业务值都不相等) - 每次循环优先获取最新值,再和当前值做对比
- 只有当值发生变化时才执行后续操作,避免无意义的重复处理
- 最后必须同步更新
current的值,否则下一次循环会一直触发变化检测
内容的提问来源于stack exchange,提问作者WoJ
相关产品推荐
相关产品推荐

