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

如何为Python自定义函数添加保存对象历史位置信息的功能以填充previous_position字段

实现Python函数保存上一次调用的对象位置信息

嘿,这个需求很好实现!核心思路就是让函数能记住上一次调用时的对象位置状态,Python里函数本身就是对象,咱们直接给它加个属性来存这个状态就行,不用搞全局变量或者额外的类,既简洁又干净。

先看修改后的完整代码:

def my_func(some_objects):
    # 首次调用时初始化函数的"记忆"属性,用来存上一次各对象的位置
    if not hasattr(my_func, '_last_positions'):
        my_func._last_positions = {}
    
    objects_information = []
    # 先临时存本次调用的所有对象位置,最后再更新"记忆"
    current_positions = {}
    
    for object_ in some_objects:
        object_information = {}
        object_information['name'] = object_.name
        object_information['position'] = object_.position
        # 从"记忆"里取上次的位置,没找到就设为None
        object_information['previous_position'] = my_func._last_positions.get(object_.name, None)
        
        objects_information.append(object_information)
        # 把当前对象的位置存到临时字典里
        current_positions[object_.name] = object_.position
    
    # 更新函数的"记忆",替换成本次的位置信息
    my_func._last_positions = current_positions
    return objects_information

关键细节解释:

  • 函数属性存状态:用my_func._last_positions这个函数专属的字典来记录每次调用后各name对应的position,首次调用时通过hasattr检查并初始化,避免报错。
  • 获取历史位置:遍历对象时用dict.get()方法,既安全又省事——如果这个name之前出现过就取上次的位置,没出现过就自动返回None,完美匹配你的需求。
  • 更新记忆:先把本次所有对象的位置存到临时字典current_positions,遍历完再替换_last_positions,这样不会在遍历过程中因为更新状态而影响当前的取值逻辑。

小提示:

  • 如果需要重置函数的"记忆"(比如想清空之前的记录),直接执行my_func._last_positions = {}或者del my_func._last_positions就可以了。
  • 这个状态会一直保留到程序结束,除非你手动修改它,适合大多数场景。

内容的提问来源于stack exchange,提问作者adaniels

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 12:33:12