gpt4 book ai didi

Python:局部变量神秘地更新全局变量

转载 作者:太空宇宙 更新时间:2023-11-03 11:08:01 24 4
gpt4 key购买 nike

我有一个函数,我在其中使用局部变量,然后在函数完成后传回最终变量。我想记录这个变量在函数之前是什么,但是全局变量与局部变量一起更新。这是我的代码的缩写版本(它很长)

def Turn(P,Llocal,T,oflag):
#The function here changes P, Llocal and T then passes those values back
return(P, Llocal, T, oflag)

#Later I call the function
#P and L are defined here, then I copy them to other variables to save
#the initial values

P=Pinitial
L=Linitial
P,L,T,oflag = Turn(P,L,T,oflag)

我的问题是 L 和 Linitial 都在更新 Llocal 时更新,但我希望 Linitial 不变。 P 没有改变,所以我对这里发生的事情感到困惑。帮助?谢谢!

勇敢者的完整代码在这里:https://docs.google.com/document/d/1e6VJnZgVqlYGgYb6X0cCIF-7-npShM7RXL9nXd_pT-o/edit

最佳答案

问题在于 P 和 L 是名称绑定(bind)对象,而不是值本身。当您将它们作为参数传递给函数时,实际上是将绑定(bind)的副本传递给 P 和 L。这意味着,如果 P 和 L 是可变对象,则对它们所做的任何更改都将在函数调用之外可见.

您可以使用 copy模块保存名称值的副本。

关于Python:局部变量神秘地更新全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14046436/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com