日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

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

發布時間:2025/3/15 python 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python复制代码会被发现吗,我发现了一个记忆代码片段,我想知道它在复制。复制... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

通常,復制一個對象應該創建一個精確的克隆:如果它有緩存的值,也應該復制它們。如果不這樣做,這通常是對深度復制的速度優化,不會有明顯的副作用。在

如果您正在制作某個內容的副本,并且希望清除該副本中的緩存值,則應顯式清除該緩存。在

如果您確實希望對象的副本不復制緩存,那么定義__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复制代码会被发现吗,我发现了一个记忆代码片段,我想知道它在复制。复制...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。