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

탱언님의 프로필 이미지
탱언

작성한 질문수

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

전역 변수(Global Variables)

지역변수, 전역변수

작성

·

471

0

y = 100

def test2():
    # y = 1000
    # y *= 10
    return y

# 실행
print(f'ex2 결과 : {test2()}')
y = 100

def test2():
    # y = 1000
    y *= 10
    return y

# 실행
print(f'ex2 결과 : {test2()}')

이거 두 개의 차이점을 잘 모르겠습니다

위 코드는 실행이 되고, 아래 코드는 실행이 되지 않는데,

위 코드에서도 결국에는 y를 리턴하기전에 y라는 변수가 함수

내에서는 선언이 되어있지 않은 것은 마찬가지 아닌가요??

할당 이전에 참조되었기 때문에 UnboundLocalError가

발생하는건데, return이라는 것을 실행하는 것 또한 할당 이전

에 참조 된 것이라고 볼 수 있는거 아닌가용

답변 2

2

탱언님의 프로필 이미지
탱언
질문자

첫 번째 코드에서는 test2() 함수 내에서 y를 정의하지 않았으므로, y는 전역 변수로 간주됩니다. 이 경우에는 test2()에서 전역 변수 y를 반환하는 데 아무 문제가 없습니다.

하지만 두 번째 코드에서는 test2() 함수 내에서 y를 선언하고 y 값을 변경했습니다. 이때, y는 지역 변수로 간주되며, 전역 변수 y와는 별개의 변수로 취급됩니다.

Chat GPT 답변도 남겨요~

좋은사람님의 프로필 이미지
좋은사람
지식공유자

굿입니다.

1

좋은사람님의 프로필 이미지
좋은사람
지식공유자

안녕하세요.

스코프에 대해서 질문주셨네요.

아래 함수 지역내에 y 변수가 초기화 되어 있지 않기 때문에 에러가 발생해요.

함수 지역내에서 y 랑 외부의 y랑 영역이 다르기 때문에 발생하는 에러입니다.

주석을 해제하시면 실행이 될거예요.(변수를 찾는 순서와 관련이 있어요.)

스코프에 대해 자세히 나와 있는 링크를 드릴테니 한 번 읽어보세요!

 

https://velog.io/@pm1100tm/Python-%EB%B3%80%EC%88%98%EC%99%80-%EC%8A%A4%EC%BD%94%ED%94%84-variablescope

 

탱언님의 프로필 이미지
탱언

작성한 질문수

질문하기