some_dict
每次调用该函数时,都会在内存中创建字典。- 函数返回时将其释放。
- 每次调用该函数时重新创建字典确实非常昂贵,尤其是在字典很大的情况下。您可以改为在调用程序函数中创建字典(假设调用程序本身仅被调用一次),并将其作为参数传递给该函数
some_function()
。
例如,考虑
caller()调用该函数的函数
callee(
some_function()在您的问题中),如下所示:
def caller(): callee()
从您的使用情况来看,我们想
callee()多次调用,并且需要在中重用相同的字典
callee()。让我们来看一下正常的使用案例。
1. 在中生成字典
callee()。这是您问题中的示例。
def caller(): for loop: callee()def callee(): generate dictionary do something with dictionary
在这种情况下,每
callee()调用一次,就必须生成一个新的字典。这是因为一旦
callee()返回,它的所有局部变量都会被释放。因此,您不能在
callee()s之间“重用”相同的字典。
2. 在中生成字典
caller()并将其作为参数传递给
callee()。
def caller(): generate dictionary for loop: callee(dictionary)def callee(dictionary): do something with dictionary
在这种情况下,您将在中生成一次字典
caller(),然后将其传递给每个
callee()函数。因此,每次调用时
callee(),都不需要重新生成字典。
字典是通过引用传递的,因此您每次调用时都不会传递巨大的数据结构
callee()。我不会对此做更深入的介绍(您可以在此处找到很好的解释),但是从本质上讲,将字典作为参数传递给的成本可以忽略不计
callee()。



