首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python:使用函数参数持久化记忆函数的策略?

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

Stack Overflow用户
提问于 2012-02-20 06:52:38
回答 2查看 347关注 0票数 5

我已经写了一个小类来持久地记忆一些昂贵的函数,这些函数对随机网络进行各种统计分析。

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

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

我暂时通过使用函数名作为字符串来解决这个问题,但当人们开始考虑更改函数的实现或匿名函数等时,这会引发一大堆问题。但我可能不是第一个担心这样的事情的人。

有没有人有什么策略可以在Python中持久化地记忆带有函数参数的函数?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-20 07:12:02

看一下如何使用它作为函数的标识

代码语言:javascript
复制
[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']
]

它应该正确地处理以任何方式改变实现...

票数 2
EN

Stack Overflow用户

发布于 2012-02-20 07:16:37

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

它将为函数的代码生成一个字符串表示。它应该能够处理更改的实现和匿名函数。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9354087

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档