Python:使用函数参数持久记忆函数的策略?

2024-10-06 13:06:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我写了一个小类来持续记忆一些对随机网络进行各种统计分析的昂贵函数。在

这些都是纯函数;所有数据都是不可变的。但是,有些函数将函数作为参数。在

基于这些参数生成键是一个小问题,因为在Python中,函数对象相等等同于函数对象标识,即使函数实现不变,它也不会在会话之间保持。在

作为一个匿名函数的实现,当我开始使用它自己的函数名时,我就开始考虑这个问题了。但我可能不是第一个担心这些事情的人。在

有没有人有任何策略可以在Python中使用函数参数持久地记忆函数?在


Tags: 数据对象记忆函数网络参数函数参数事情
2条回答

看看用这个作为函数的标识

[getattr(func.__code__,s) 
 for s in ['co_argcount', 'co_cellvars', 'co_code', 'co_consts', 
           'co_filename', 'co_firstlineno', 'co_flags', 'co_freevars',
           'co_lnotab', 'co_name', 'co_names', 'co_nlocals', 'co_stacksize',
           'co_varnames']
]

它应该能够正确地处理以任何方式更改实现。。。在

一种选择是使用marshal.dumps(function.func_code)

它将为函数的代码生成一个字符串表示。它应该处理不断变化的实现和匿名函数。在

相关问题 更多 >