通常,复制一个对象应该创建一个精确的克隆:如果它有缓存的值,也应该复制它们。如果不这样做,这通常是对深度复制的速度优化,不会有明显的副作用。在

如果您正在制作某个内容的副本,并且希望清除该副本中的缓存值,则应显式清除该缓存。在

如果您确实希望对象的副本不复制缓存,那么定义__copy__或{}方法来控制复制。(请注意,这通常用于复制底层资源,如文件描述符和句柄)。在

这里有两个例子。在class memoized(object):

"""

Decorator that caches a function's return value each time it is called.

If called later with the same arguments, the cached value is returned, and

not re-evaluated.

"""

def __init__(self, func):

self.func = func

self.cache = {}

def __copy__(self):

"""

Don't copy the cache in a copy.

"""

return memoized(self.func)

def __deepcopy__(self, memo):

"""

Don't copy the cache in a deep copy.

"""

return memoized(self.func)

def __call__(self, *args):

try:

return self.cache[args]

except KeyError:

value = self.func(*args)

self.cache[args] = value

return value

except TypeError:

# uncachable for instance, passing a list as an argument.

# Better to not cache than to blow up entirely.

return self.func(*args)

def __repr__(self):

"""Return the function's docstring."""

return self.func.__doc__

def __get__(self, obj, objtype):

"""Support instance methods."""

return functools.partial(self.__call__, obj)

def clear_cache(self):

self.cache = {}

@memoized

def fibonacci(n):

"Return the nth fibonacci number."

if n in (0, 1):

return n

return fibonacci(n-1) + fibonacci(n-2)

fibonacci(12)

print fibonacci.cache

fibonacci.clear_cache()

print fibonacci.cache

fibonacci(12)

print fibonacci.cache

import copy

f = copy.deepcopy(fibonacci)

print f.cache

python复制代码会被发现吗,我发现了一个记忆代码片段,我想知道它在复制。复制...相关推荐

  1. sqlite 0转换为bit_Cisco Talos在SQLite中发现了一个远程代码执行漏洞

    思科Talos的研究人员在SQLite中发现了一个use-after-free() 的漏洞,攻击者可利用该漏洞在受影响设备上远程执行代码. 攻击者可以通过向受影响的SQLite安装发送恶意SQL命令来 ...

  2. python 全栈开发,Day50(Javascript简介,第一个JavaScript代码,数据类型,运算符,数据类型转换,流程控制,百度换肤,显示隐藏)...

    一.Javascript简介 Web前端有三层: HTML:从语义的角度,描述页面结构 CSS:从审美的角度,描述样式(美化页面) JavaScript:从交互的角度,描述行为(提升用户体验) Jav ...

  3. 代码太多不要怕,分享一个阅读代码的神器

    大家好,我是程序员小哈. 又到了知识分享时间,今天我给大家分享一个阅读代码的神器,如果对你有所帮助的话,还请文末点赞支持一下哈. 今天给大家介绍一个查看代码的编辑器软件:Source Insight, ...

  4. 刚刚,Python 3.10 正式发布了,我发现了一个可怕的功能..

    就在( 2021年10月4日) Python 终于正式发布了 3.10 版本,看了下这个版本的一些特性,最受关注的应该就是 结构模式匹配 了吧?也就是大家所熟悉的 switch-case ,写错了不好 ...

  5. 【Python】刚刚,Python 3.10 正式发布了!我发现了一个可怕的功能...

    就在2021年10月4日, Python 终于正式发布了 3.10 版本,看了下这个版本的一些特性,最受关注的应该就是 结构模式匹配 了吧?也就是大家所熟悉的switch-case,写错了不好意思,是 ...

  6. 刚刚,Python 3.10 正式发布了!我发现了一个可怕的功能...

    " 阅读本文大概需要 8 分钟. " 就在前几天( 2021年10月4日) Python 终于正式发布了 3.10 版本,看了下这个版本的一些特性,最受关注的应该就是 结构模式匹配 ...

  7. 用 Python 分析了所有微信好友,发现了一个秘密...

    点击上方"何俊林",马上关注,每天早上8:50准时推送 真爱,请置顶或星标 Illustrations by Evgenij Kungur 文/ Python攻城狮 最近研究了一下 ...

  8. python分析销量10w+的车厘子,发现了一个秘密

    又到了吃车厘子的季节. 冬季,中国市面上的车厘子主要来自南半球的智利.新西兰和澳大利亚等地,其中中国更是智利最大的车厘子出口国,出国占比达百分之90以上.. 远隔重洋.长途跋涉而来的车厘子的消费价格里 ...

  9. 为了营造一个看代码舒服的氛围,写了获取王者荣耀所有高清皮肤的代码,现在写代码舒心了(中途发现了一个秘密)

    自从发现了该海报,我沦陷了

最新文章

  1. Javascript闭包和闭包的几种写法及用途
  2. NGUI_Texture
  3. 职场经典小故事-II
  4. 想成为嵌入式程序员应知道的16个基本问题
  5. map任务和reduce任务个数如何计算
  6. linux系统多大分区,linux系统中fdisk最大能认到多大分区
  7. 奇怪的加拿大:一方面大力禁烟,另一方面放松大麻
  8. 一个很好用的桌面取色器和一个在线取色器
  9. sql server 2000 个人版怎么在win7下安装
  10. ali-oss配合element上传130M以上的文件,浏览器直接崩溃,有大神知道是什么情况么
  11. JDBC Connection [com.mysql.jdbc.Connection@2bbf4094] will not be managed by Spring 的一个可能错误
  12. 计算机智能未来发展趋势,在未来,人工智能的几个发展方向或趋势!
  13. 转发:【论文精读】Human Semantic Parsing for Person Re-identification
  14. C++问答1 语言基础
  15. tensorflow详细安装教程(Win10, Anaconda,Python3.9)
  16. 苹果x计算机怎么恢复,苹果手机怎样找回备忘录,电脑小白数据恢复全攻略
  17. POJ-3255 Roadblocks
  18. Android TV TIF源码阅读笔记
  19. 2022世界十大最佳医院介绍
  20. 前端三大构建工具 Webpack、Vite、Rollup 优劣势及原理分析

热门文章

  1. 企业数字化新战场:低代码究竟是“毒瘤”还是“良药”?
  2. 所有致力于团队沟通协作的看图软件
  3. 局域网聊天9月局域网聊天
  4. DirectSound
  5. 用VC写Assembly代码(5) --循环的使用(一)
  6. 拜托,别再拿毒鸡汤祸害我们了,我们已经很苦很努力了
  7. 程序员会写诗是怎样的体验
  8. 996,别让年轻人累到不觉得累
  9. 2018年全国《程序员高考》真题试卷
  10. JAVA题目 写一个收费站类_Java综合题目