提问人:Tar-Eruntalion 提问时间:4/21/2023 更新时间:4/21/2023 访问量:38
Python 变量在多个函数之间保持其值 [duplicate]
Python Variable keeping it's value across multiple functions [duplicate]
问:
我正在编写一个程序,其中我的值在开始时为 0,但在整个程序中用于跟踪“更改”,然后我想打印更改的总和,其余代码工作正常,但由于某种原因,进入多个函数的变量不会保留更改并在我打印时返回它们,但每次都返回 0
var = 0
def func1(var1):
for i in range(x):
for j in range(y):
if condition:
pass
elif condition:
func2(var1)
return var1
def func2(var2):
if condition:
pass
elif condition:
var2 += 1
return var2
func1(var)
print(var)
答:
1赞
UnsanitizedInput
4/21/2023
#1
您正在传递 as ,操作 var1 的值并返回 的值。但是,您不会将变量分配给 的返回值。因为你不是在操纵它自己,只是在操纵它的值,当你在最后打印时,你仍然会得到它的原始值。试试这个:var
func1()
var1
var1
func1()
var
func1()
var
output = func1(var)
print(output) # will print an updated value - I can't say what value as I don't know x and y
print(var) # will still print 0 as you are not actually modifying var itself.
如果在你内部没有传入参数,而是在操作而不是参数,var 就会被改变。但是在 python 中,您只是修改您传入的值,而不是变量的实际值。func1()
var
var1
我建议研究按值传递、按引用传递以及 python 如何处理这些事情。
6赞
chepner
4/21/2023
#2
int
值是不可变的,Python 不使用引用调用语义。 将局部变量设置为引用等于 的对象。它既不改变最初分配给 的值,也不更新最初用于传递值的变量。var2 += 1
var2
int
var2 + 1
var2
func2
上一个:R 中的嵌套函数
下一个:如何从异步调用返回响应?
评论
var2
func2
func1
var1 = func2(var1)