인프런 커뮤니티 질문&답변

hunter님의 프로필 이미지
hunter

작성한 질문수

프로그래밍 시작하기 : 도전! 45가지 파이썬 기초 문법 실습 (Inflearn Original)

실행 순서 질문

작성

·

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를 연결하셨습니다. 변수가 어디서 어떻게 변경되는지에 대해 여러분이 헷갈릴 수 있는데요, 아래에서 그 실행 순서를 간단히 설명드리겠습니다.

  1. 처음에 a = 20으로 시작합니다. 이는 전역 변수로 선언되었습니다.
  2. a = 100으로 변경되며, ex1ex2에서 각각 100으로 출력됩니다.
  3. 다음으로 ex4에서 test() 함수가 호출됩니다. 이때 함수 내부에서 global a로 인해 전역 변수 a가 함수 내에서 변경됩니다.
  4. test() 함수 내에서 a = 35가 되어 전역 변수 a의 값이 35로 변경되고, ex3에서 35로 출력됩니다.
  5. test() 함수의 return a는 35를 반환하며, ex4에서 이 값을 출력합니다.
  6. 마지막으로 ex5에서 print(f' ex5 의 결과: {a}')를 실행하면 이미 함수 test()를 통해 35로 변경된 전역 변수 a를 출력하게 됩니다.

이와 관련하여 이전의 유사한 질문에 대한 답변이 이 링크에서 확인하실 수 있습니다. 해당 링크에서는 파이썬의 기본 문법 및 용어들에 대한 추가적인 학습 자료를 제공하고 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

hunter님의 프로필 이미지
hunter

작성한 질문수

질문하기