我想了解更多关于“有内存”的函数,这些函数是作为类和闭包实现的。

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

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()) 

这些功能的性能和内存消耗是否更好?使用插槽将使类的性能更好?

超级大菜鸟超级大菜鸟提问于
tthha真理偏执狂回答于

在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

这看起来像函数版本是一个更大的内存占用。

回答过的其他问题

关于作者

所属标签

扫码关注云+社区