저는 로컬 변수로 작업하는 함수를 가지고 있으며, 함수가 완료된 후 최종 변수를 다시 전달합니다. 이 변수가 함수 앞에 있었지만 전역 변수가 지역 변수와 함께 업데이트된다는 것을 기록하고 싶습니다. 여기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이다 (그 상당히 긴) 내 코드의 축약 된 버전이며 Llocal가 업데이트 될 때 Linitial 모두 정확하게 업데이트됩니다,하지만 난 Linitial이 변경되지 싶습니다. P는 변하지 않으므로 여기서 무슨 일이 일어나고 있는지 혼란스러워합니다. 도움? 감사!
용감한 사람들을위한 전체 코드는 여기에 있습니다 : https://docs.google.com/document/d/1e6VJnZgVqlYGgYb6X0cCIF-7-npShM7RXL9nXd_pT-o/edit
:
여기에 좋은 설명이있어? 보고있는 것을 보여주는 완벽한 독립형 실행 가능한 예제를 제공 할 수 있습니까? –
P는 int이고 L은리스트입니다. T는 int이고, oflag는 bool입니다. 나는 IDLE의 디버거를 통해이 문제를 발견했다. 글로벌 변수와 로컬 변수를 표시하면, L, Linitial, Llocal의 3 개가 동시에 변경되는 것을 알 수 있습니다. 여기에 전체 코드를 업로드 할 수 있지만 몇 백 줄입니다. 내가 지금 걱정하고있는 부분은 190과 57 주위에서 시작합니다. 현재 66 행에서 오류가 발생하지만 오류의 근본적인 원인은이 변수를 업데이트하는 것입니다. – mykinz
[PEP-8] (http://www.python.org/dev/peps/pep-0008/)은 클래스 이름에'CapWords'를 예약 할 것을 권장합니다. –