我有一個函數,我使用局部變量,然後在函數完成後返回最終變量。我想保留這個變量在函數前的記錄,但全局變量和局部變量一起更新。下面是我的代碼的縮寫版本(其相當長)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'。 –