更高效的是类定义中的字典还是函数定义中的字典?
我有一个对象,它会一直保存在内存中,而且会有成千上万个实例,所以有效利用内存非常重要。
这个对象会使用一些像字典这样的结构:
{
'text':doSomething,
'string':doAnotherThing,
'int':doSomethingCrazy
}
当然,我可以把它放在类外面,也就是模块级别,这样它肯定只会在内存中存储一次,但我更喜欢把相关的东西放在一起。如果这个对象只在那个类中使用,把它放在类里面看起来更整洁。
我的问题是,如果我把字典放在类的定义里面,它会在内存中只存储一次吗?
class MyClass(object):
thatDict={}
或者如果我把它放在函数的定义里面,它也会只存储一次吗?
class MyClass(object):
def someFunc():
thatDict={}
1 个回答
6
如果你把字典放在一个函数里,每次调用这个函数的时候,字典都会被重新创建一次。这有点浪费,特别是当字典很大的时候。
class MyClass(object):
def someFunc():
thatDict={} # recreated every function call
如果你把它放在一个类的定义里,它只会在模块加载的时候创建一次。
class MyClass(object):
thatDict={} # Only one copy
你也可以在文件的作用域里创建它,这样效果是一样的:
thatDict={} # Only one copy
class MyClass(object):
...