我有一个函数,我使用局部变量,然后在函数完成后返回最终变量。我想保留这个变量在函数前的记录,但全局变量和局部变量一起更新。下面是我的代码的缩写版本(其相当长)Python:局部变量神秘地更新全局变量
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是一个列表。 T也是一个整数,oflag是一个布尔值。我只通过IDLE的调试器发现了这个问题,它非常微妙。如果我显示全局变量和局部变量,我会看到L,Linitial和Llocal全部三个同时变化。我可以在这里上传整个代码,但是它有几百行。我现在担心的部分现在开始于190和57左右。目前它从第66行引发错误,但错误的根源是此变量更新。 – mykinz
请注意[PEP-8](http://www.python.org/dev/peps/pep-0008/)建议为类名保留'CapWords'。 –