我想了解更多关于“有内存”的函数,这些函数是作为类和闭包实现的。
考虑(非常)简单的例子:
def constant(value):
def _inner():
return value
return _inner
x = constant(5)
print(x())
vs.
class Constant():
def __init__(self, value):
self._value = value
def __call__(self):
return self._value
y = Constant(5)
print(y())
这些功能的性能和内存消耗是否更好?使用插槽将使类的性能更好?
在Python#number0#中,我得到以下内容:
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
这看起来像函数版本是一个更大的内存占用。