파이썬 초보인 이과생인데, 그래프 그리려고 matplotlib 다루다가 골때리는 게 생겨서 질문함.
이 위에 test(), test2(), 그리고 test()의 내용을 그냥 줄글로 적어놓은 코드 이렇게 세 개가 있으니
나는 셋 다 같은 결과가 나올 줄 알았는데
실제로 해 보면 test()만 그래프가 제대로 안 나오는 현상이 일어남;;
이거 왜 그런 건지, 해결할 방법 있는지 설명해 줄 수 있는 사람 있음???
사실 보통 그래프 그릴 때는 저렇게 그래프 그려주는 함수를 따로 만들 필요가 없으니 문제가 없는데...
좀 덜 귀찮아지려고 하다 보니 이상한 문제가 생김;;
myplot 함수가 외부에서 ax 변수를 참조해서 실제로는 참조를 못하니 그런 현상이 생기는거야
일반적으로 global이 아닌 한 각 변수들은 스코프 블록 스코프를 가지는데 (파이썬은 블록이 없으니 indentation) 해당 블록 바깥에서 parameter에 argument를 통해 전달하는 게 아니면 변수를 참조할 수 없음
myplot 함수를 선언할 때 def myplot(ax): 로 하고 test에서 호출할 때 myplot(ax) 이렇게 하면 myplot함수에 ax를 전달해서 그림이 나올거야
헉 진짜다 진짜 너무 고맙다, 진짜 뽀뽀라도 해 주고 싶다 ㅜㅜ
내가 파이썬은 진짜 초보적인 것만 배워서 뭔 소린지 정확히는 모르겠지만, 그니까 대충 느낌적으로 설명하면, 맨 아래 그냥 줄글로 풀어 적은 거에서는 '아 ax 위에 정의해 놨네, 저거 쓰면 되지 뭐' 식으로 프로그램이 생각하는데, 위에 test()에서는 'ax가 뭔데 씹덕아 함수 안에서 정의 안 해 놨잖아???' 라고 한다는 거 맞지?