some_dict
每次调用函数时,都会在内存中创建字典.
它在函数返回时被释放.
每次调用函数时重新创建字典真的很昂贵,特别是如果字典很大的话.您可以在调用函数中创建字典(假设调用者本身只调用一次)并将其作为参数传递给函数some_function()
.
例如,考虑caller()
调用函数的函数callee
(some_function()
在您的问题中),如
def caller(): callee()
从您的使用案例中,我们想callee()
多次调用,我们需要重用相同的字典callee()
.让我们来看看正常的使用案例.
1.生成字典callee()
.这是您问题中的示例.
def caller(): for loop: callee() def callee(dictionary): 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()
.