繁体   English   中英

Python 是否具有与 std::move 类似的功能?

[英]Does Python have a similar function to std::move?

>>> cache = {}
>>> cache['1'] = 'long string'
>>> cache['2'] = 'very long string'
>>> buffer = {}
>>> buffer['1'] = cache['1']
>>> del cache['1']
>>> buffer['2'] = cache['2']
>>> del cache['2']
>>> cache
{}
>>> buffer
{'1': 'long string', '2': 'very long string'}

我有两个大词典(即缓存和缓冲区)。 每隔一段时间,我需要移动从内容cachebuffer和删除复制的项目cache

Python 是否提供与 C++11 std::move 类似的功能,以便我不必制作稍后将被删除的项目的额外副本?

根据@JETM 的评论更新

>>> cache = {}
>>> cache['1'] = 'long string2'
>>> buffer['1'] = cache['1']
>>> id(buffer['1'])
139639957636576
>>> id(cache['1'])
139639957636576
>>> del cache['1']
>>> id(buffer['1'])
139639957636576

看起来 cache['1'] 的值没有被复制到 buffer['1'] 中。

在这种特殊情况下,您可以使用dict.pop

buffer['1'] = cache.pop('1')

不过,值得注意的是,在 Python 中对象更像是指针的同义词。 也就是说,当您执行此复制时,不会复制任何数据,您只需在buffer添加对对象的引用并从cache删除对它的引用。 也就是说,只有指针被复制。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM