개발자
안녕하세요 자바,JS만 다루다 파이썬을 처음 공부하고 있는데 이상한 점이 있어서 질문드리게 되었습니다. 아래 코드의 함수 선언부 안에서, try문에서 선언한 변수를 어떻게 접근할 수 있는건가요..? 다른 언어라면 매개변수로 넘겨줘야만 하지 않나요..? 스코프에 대해 검색을 해봐도 함수 내부에서 선언한 변수를 밖에서 쓸수 없다는 내용은 많은데 이거에 대한 내용은 찾기가 힘드네요..
답변 1
인기 답변
공유해주신 코드를 보면 `word` 변수는 전역 범위에서 선언이 되어 있는데요. 기본적으로 전역 변수는 함수 내외부에서 모두 접근이 가능합니다. 비단 파이썬 뿐만 아니라 대부분의 프로그래밍 언어에서 변수의 범위(scope)라는 것은 해당 변수를 어디에서 선언하느냐에 따라서 결정이 됩니다. 아주 단순하게 두 구역으로 나누면 함수 외부를 전역(global/module) 범위라고 하고, 함수 내부를 지역(local/function) 범위라고 합니다. 또한 함수를 중첩했을 때 외부 함수와 내부 함수의 사이에서 생겨나는 비지역(nonlocal/enclosing) 범위라는 것도 있습니다. 같은 범위 내에서는 자유롭게 변수에 접근이 가능하지만 다른 범위에서 선언된 변수에 접근할 때는 정해진 제약을 따르게 되는데요. 기본적으로 바깥 쪽 범위 내에서 선언된 변수를 안 쪽 범위에서는 접근할 수 있지만, 반대로 안 쪽 범위 내에서 선언된 변수를 바깥 쪽 범위에서 접근하는 것은 불가능합니다. 이 부분을 이해하시는데 매우 중요한 개념인 변수의 범위(scope)와 Variable Shadowing에 대해서는 제가 얼마전에 자세히 설명해놓은 게시물이 있어서 공유드리오니 참고해보시면 도움이 되실 것 같습니다. https://careerly.co.kr/comments/88543
익명
작성자
2023년 08월 10일
안녕하세요. 답변 감사드립니다. try 블록 안에서 선언되었기 때문에 try 바깥에선 접근이 안될줄 알았는데 try 블록이 스코프에는 영향을 안준다고 이해하면 되는걸까요..?

달레
Apollo GraphQL Software Engineer • 2023년 08월 10일
네, try 블록이나 블록을 수반하는 다른 제어 구조(if, for, while 등등)는 변수의 스코프에 영향을 주지 않습니다. 파이썬에서 변수의 스코프는 함수, 클래스, 모듈 단위로 결정됩니다.
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
지금 가입하면 모든 질문의 답변을 볼 수 있어요!