首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python函数中的缓存

python函数中的缓存
EN

Stack Overflow用户
提问于 2012-05-08 14:15:38
回答 1查看 369关注 0票数 0

这看起来像是一些测试题。如果您考虑使用缓存参数作为第一个参数的函数

代码语言:javascript
复制
def f(cache, key, val): 
    cache[key] = val
    # insert some insanely complicated operation on the cache
    print cache

现在创建一个字典,并像这样使用函数:

代码语言:javascript
复制
c = {}
f(c,"one",1)
f(c,"two",2)

这似乎像预期的那样工作(即添加到c字典中),但它实际上是传递了那个引用,还是做了一些低效的复制?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-08 14:48:13

不复制传递到缓存的字典。只要cache变量不是函数内部的rebound,它就会保持相同的对象,并且对它引用的字典的修改将影响外部的字典。

在这种情况下,甚至不需要返回cache (实际上示例代码也不需要)。

如果f是类字典对象上的一个方法,可能会更好,以使这一点在概念上更清晰。

如果您使用id()函数(内置的,不需要导入),您可以获得任何对象的唯一标识符。您可以使用它来确认您确实在处理相同的对象,而不是任何类型的副本。

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

https://stackoverflow.com/questions/10493500

复制
相关文章

相似问题

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