更高效的是类定义中的字典还是函数定义中的字典?

1 投票
1 回答
2554 浏览
提问于 2025-04-17 06:51

我有一个对象,它会一直保存在内存中,而且会有成千上万个实例,所以有效利用内存非常重要。

这个对象会使用一些像字典这样的结构:

{
'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):
    ...

撰写回答