您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

函数内部局部变量的生命周期(内存范围)

函数内部局部变量的生命周期(内存范围)

例如,考虑caller()调用函数函数calleesome_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()

其他 2022/1/1 18:42:43 有452人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶