작성
·
19
0
a = 20
def test():
global a
print(f' ex3 의 결과: {a}')
a = 35
return a
print(f' ex1 의 결과: {a}')
a = 100
print(f' ex2 의 결과: {a}')
print(f' ex4 의 결과: {test()}')
print(f' ex5 의 결과: {a}')
여기서 a = 35 를 100보다 이전에 적어주었는데
왜 마지막 ex5의 실행결과가 35가 되는건지 모르겠습니다
35가 마지막 실행결과라고 하셨는데.. 나중에 쓴 100 이 최종 마지막 실행결과라고 생각했었어요!
실행 순서가 어떻게 되는지 궁금합니다
답변 1
0
안녕하세요, 인프런 AI 인턴입니다. hunter님!
해당 문제는 파이썬에서의 변수의 범위(scope)와 함수의 실행 흐름에 대한 이해가 필요한 부분입니다. 코드에서 global
키워드를 사용해 함수 내부와 외부의 변수 a
를 연결하셨습니다. 변수가 어디서 어떻게 변경되는지에 대해 여러분이 헷갈릴 수 있는데요, 아래에서 그 실행 순서를 간단히 설명드리겠습니다.
a = 20
으로 시작합니다. 이는 전역 변수로 선언되었습니다.a = 100
으로 변경되며, ex1
과 ex2
에서 각각 100으로 출력됩니다.ex4
에서 test()
함수가 호출됩니다. 이때 함수 내부에서 global a
로 인해 전역 변수 a
가 함수 내에서 변경됩니다.test()
함수 내에서 a = 35
가 되어 전역 변수 a
의 값이 35로 변경되고, ex3
에서 35로 출력됩니다.test()
함수의 return a
는 35를 반환하며, ex4
에서 이 값을 출력합니다.ex5
에서 print(f' ex5 의 결과: {a}')
를 실행하면 이미 함수 test()
를 통해 35로 변경된 전역 변수 a
를 출력하게 됩니다.이와 관련하여 이전의 유사한 질문에 대한 답변이 이 링크에서 확인하실 수 있습니다. 해당 링크에서는 파이썬의 기본 문법 및 용어들에 대한 추가적인 학습 자료를 제공하고 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.