我试图将函数的返回值另存为全局变量,以便以后可以使用返回值。但是,由于我必须使用函数的多个返回值,因此需要多次更改函数输入。结果,函数的返回也将在过程中发生变化,并且我无法将原始函数的返回保存到全局变量中。
例如,从名为“ A”的函数中,首次返回“ x”的值。然后,我尝试将值“ x”保存在一个名为“ m”的全局变量中。之后,我更改了函数“ A”的输入,以从函数返回另一个值“ y”。但是,在此过程中,分配给全局变量“ m”的值“ x”变为值“ y”(因为“ m”被分配为等于函数“ A”的返回值,但不等于值) “X”)。
在这种情况下,我想问以下问题:
如何一次保存从函数“ A”获得的值“ x”,同时从函数“ A”获得值“ y”,这样我就可以利用“ x”我的代码后面的部分是“ y”?非常感谢。
答案 0 :(得分:0)
将值存储在字典中。
赞:
GLOBAL_VARIABLE = {}
def calculate_output(input):
# Calculate and return the output for the given input
def function(input):
if GLOBAL_VARIABLE.get(input) is None:
GLOBAL_VARIABLE[input] = calculate_output(input)
return GLOBAL_VARIABLE[input]
那么程序的其他部分就不需要直接访问GLOBAL_VARIABLE。
始终调用该函数,如果存在该函数,它将返回一个预先计算的输出,否则它将首先计算它,然后存储。如果可以避免,直接使用全局变量被认为是不好的做法。
实际示例:
MULTIPLY_BY_2_CACHE = {}
def calculate_multiply_by_2(number):
return number * 2
def multiply_by_2(number):
if MULTIPLY_BY_2_CACHE.get(number) is None:
print("Calculating result for %d" % number)
MULTIPLY_BY_2_CACHE[number] = calculate_multiply_by_2(number)
else:
print("Retrieving existing result for %d" % number)
return MULTIPLY_BY_2_CACHE[number]
print(multiply_by_2(1))
print(multiply_by_2(1))
print(multiply_by_2(2))
print(multiply_by_2(3))
print(multiply_by_2(2))
结果:
Calculating result for 1
2
Retrieving existing result for 1
2
Calculating result for 2
4
Calculating result for 3
6
Retrieving existing result for 2
4
答案 1 :(得分:0)
您可以将所有这些存储在字典中,因此每次调用该函数时,都使用您选择的标签将结果存储在字典中。在此示例中,我将获取随机字符,并获取它们的unicode点码并将其存储在字典中。然后可以使用char查找这些内容。
def my_func(char):
return ord(char)
results = {}
for char in "duthxb":
results[char] = my_func(char)
print(results)
print(results['t'])
输出
{'d': 100, 'u': 117, 't': 116, 'h': 104, 'x': 120, 'b': 98}
116