Python中简单事物的类或闭包

问题描述

| 我想了解更多有关作为类与闭包实现的“带有内存”功能的信息。 考虑(非常)简单的示例:
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()) 
这些性能和内存消耗是否更好?使用插槽会使类表现更好吗? 谢谢, 赫南 附注-我知道在这个极其简单的示例中,可能没有关系。但是我对更复杂的功能感兴趣,这些功能将被调用很多次或被实例化很多次。     

解决方法

在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
看起来像函数版本是更大的内存占用。     ,我会编写更复杂的功能并对它们进行概要分析。     ,如果您想要性能并且只希望访问值,那么最好使用内置数据类型(例如元组)以获得最佳性能。     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...