gpt4 book ai didi

python - Python 中简单事物的类或闭包

转载 作者:IT老高 更新时间:2023-10-28 20:55:38 25 4
gpt4 key购买 nike

我想了解更多关于作为类与闭包实现的“带内存”函数。

考虑一个(非常)简单的例子:

def constant(value):
def _inner():
return value
return _inner
x = constant(5)
print(x())

对比

class Constant():
def __init__(self, value):
self._value = value

def __call__(self):
return self._value
y = Constant(5)
print(y())

这些中的任何一个的性能和内存消耗是否更好?使用 slot 会让类(class)表现更好?

谢谢,

埃尔南

Ps.- 我知道在这个极其简单的例子中,可能没关系。但我对更复杂的函数感兴趣,这些函数会被调用很多次或者会被实例化很多次。

最佳答案

在 Python 2.6 中,我得到以下信息:

def foo(x):
def bar():
return x
return bar

b = foo(4)
b.__sizeof__()
>>> 44

但是使用一个类:

class foo(object):
def __init__(self,x):
self.x = x
def __call__(self):
return self.x

c = foo(4)
c.__sizeof__()
>>> 16

看起来函数版本占用的内存更大。

关于python - Python 中简单事物的类或闭包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5430502/

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