You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何以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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:04:36