【发布时间】:2021-12-27 20:23:35
【问题描述】:
目标
我正在尝试编写一个函数,其中一个或多个输入参数是一个由函数更新的全局变量,而不必在函数内使用return 值。我知道我可以从函数中返回一个元组或两个单独的值,但我认为如果可能的话,从函数内部更新全局变量将是另一种有趣的方法。
这样做的原因
当全局变量已知(即先前在 python 脚本中定义)时,使用函数更新全局变量很容易。但是,我想在单独的 .py 文件中定义该函数,以便在其他 python 脚本中轻松使用该函数。因此,我需要能够支持不同的变量名来更新。
虽然这根本没有必要,但我只是对这是否可能感兴趣。
示例伪代码
我在想这样的事情:
def math_function(input_val, squared_result, cubed_result):
squared_result = input_val**2 #update the var input as the squared_result parameter
cubed_result = input_val**3 #update the var input as the cubed_result parameter
您可以在其中输入input_val 的数字,然后输入squared_result 和cubed_result 的全局变量,函数会根据结果进行更新。然后理论上它会像这样工作:
#Declare global variables
b = 0
c = 0
#then somewhere in the code, call the function
math_function(2, b, c)
#check the new values
print(b) #Output: b = 4
print(c) #Output: c = 8
这将允许我在不同的 python 脚本中使用该函数,而不必担心返回结果的顺序。
【问题讨论】:
-
Python 通过值而不是引用传递参数。所以赋值给参数变量对调用者的变量没有影响。
-
这个的根本问题是你不能在 Python 中传递变量。您只能传递对象。您的函数接收参数
2、0和0,而不是2、b和c。 -
您可以做到这一点的唯一方法是传递一个可变容器对象。然后该函数可以修改其内容。