首页 > 解决方案 > 如何将被调用函数中的局部变量更新为python中的函数参数?

问题描述

如果您在函数中创建局部变量,然后以这些变量作为参数调用函数。您如何更新变量的值,使其反映在两个函数中?

披露:

您将如何获取函数 2 中的值以更新与函数 1 中相同的值?

先感谢您!

例如:

def function_1():
    object_1 = 1
    object_2 = 2

    function_2(object_1, object_2)

    print("Original values add up to {}".format(object_1 + object_2))

def function_2(object_1, object_2):
    object_1 += 1
    object_2 += 2

    print("Updated values add up to {}".format(object_1 + object_2))

if __name__ == '__main__':
    function_1()

Updated values add up to 6
Original values add up to 3

标签: python-3.xfunctionvariables

解决方案


选项 1:将更新后的值返回给调用函数

def function_1():
    ...
    object_1, object_2 = function_2(object_1, object_2)
    ...

def function_2(object_1, object_2):
    ...
    return object_1, object_2

function_1()选项 2:在(例如 adict或 a或自定义类)中构建数据结构list,然后将其作为参数传递给function_2(); dict您对内部所做的更改function_2()将反映在 中function_1(),因为它是相同的,您只是在函数之间dict传递了对相同参数的引用。dict

def function_1():
    ...
    data = {'object_1': 1, 'object_2': 2}
    function_2(data)

    # the variable 'data' contains the changes made in 'function_2()'
    print(data)
    ...

def function_2(data):
    # the variable 'data' points to the same dict as in 'function_1()'
    data['object_2'] += 55
    ...

我现在可能没有其他选择,但我认为这两个是更简单的选择。


推荐阅读