gpt4 book ai didi

python - 类和闭包的状态保留

转载 作者:行者123 更新时间:2023-12-01 11:32:44 25 4
gpt4 key购买 nike

来源:mark lutz 学习 python

内容区域:第 503 页

类与闭包:它指出“类在状态保留方面似乎更好,因为它们通过属性分配使它们的内存更加明确。

当保留状态是唯一目标时,闭包函数通常提供更轻量级且可行的替代方案。它们为单个嵌套函数所需的数据提供每次调用本地化存储。

状态保留是什么意思,它如何通过属性分配使内存更加明确?

谁能提供一个例子来证明在保留状态的情况下闭包的重量更轻,并解释在单个嵌套函数的上下文中数据的按本地化存储意味着什么?

最佳答案

这是一个简单的闭包:

def make_counter(start=0):
count = start - 1
def counter():
nonlocal count # requires 3.x
count += 1
return count
return counter

你可以这样调用它:

>>> counter = make_counter()
>>> counter()
0
>>> counter()
1
>>> # and so on...

如您所见,它会跟踪它被调用的次数。此信息称为“状态”。它是“每次调用本地化状态”,因为您可以一次制作多个计数器,并且它们不会相互干扰。在这种情况下,状态(几乎)隐式保留,基于闭包在其封闭范围内保留对 count 变量的引用。另一方面,类会更明确:

class Counter:
def __init__(self, start=0):
self.count = start - 1
def __call__(self):
self.count += 1
return self.count

在这里,状态明确地附加到对象。

关于python - 类和闭包的状态保留,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30873072/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com