1103
2016-11-28 19:56:55
1
아 질문의 의미를 이제야 알겟네요. (그래봐야 5분정도 걸렷지만)
현재 구성에서는 변수 (image) 를 글로벌로 사용하고 있으나, 현재는 함수내의 로컬적인 (정확히는 참조만 하는 상태) 가 되어있습니다.
그래서 참조를 한 상태에서의 변수는 아무리 변경을 하여도 글로벌변수엔 전혀 지장을 주지 않습니다.
하나의 def 에서 인자를 하나 입력 받게 되면, 그 입력받을때 쓴 단어 (여기선 image) 는 외부의 것을 그대로 사용하게 한다는 의미가 아니라, "외부의 값" 만을 가져와서 쓰겟다는 의미로 되어서, 함수내부의 image 와 함수 외부의 image 가 단어는 같지만, 기능의 사용이 달라집니다.
그래서 함수내부 (choose) 에서 아무리 image 의 변수를 조작해도, 그 image 는 새로 정의된 def 상에서의 image 이기 때문에, 그 안에서는 정확하게 계산이 이뤄지지만, 외부의 image 에는 영향을 주지 않기 때문에 발생하는 상태입니다.
전역변수/지역변수 (global var / local var ) 의 차이로 인해 생겨난 문제입니다. 이 한마디로 이해를 하시거나, 생각나는 바가 있다면, 그부분을 수정하시면 됩니다만, 그런 차이를 모르기 때문에 이 글을 쓰신거라고 생각하기 때문에 적절한 대처법을 새로운 댓글로 추가하겟습니다.