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