코딩한걸음
article thumbnail
728x90
반응형

변수 유효 범위 Variable Scope


Python 뿐만 아니라 대부분의 언어에는 변수 유효 범위 Variable Scope라는 개념이 있다.

변수가 선언된 위치나 키워드에 따라 변수를 사용할 수 있는 범위가 달라지는데 

Python에서는 지역 변수 Local Variable와 전역 변수 Global Variable로 나뉘게 된다.

  • 지역 변수는 함수 내부에서 선언되어 선언된 함수 밖에서는 영향을 끼치지 못한다
  • 전역 변수는 함수 밖에서 선언되어 선언된 이후 모든 코드에 영향을 끼친다

지역 변수 Local Variable

코딩은 직접 해보는게 이해하기 좋다. 일단 써보고 실행해보자.

# 함수 선언
def test():
    A = 10 # 함수 내에서 선언한 지역함수 A

test()
print(A)

함수 안에서 A = 10을 선언해주고 밖에서 print(A)를 해보니

터미널에 'A'는 정의되지 않았다고 뜬다. 이게 지역함수의 특징이다.

함수 안에서만 영향을 끼치고 함수 밖에선 영향을 못끼친다.

함수를 선언할 때는 잘 나온다.


전역 변수 Global Variable

전역 변수는 반대로 선언 후엔 모든 코드에 영향을 미친다

# 변수 선언
A = 10
def test():
    print(A)
    
test()

함수 안에서 A를 정의하진 않았지만 함수 test를 불러오면 print(A)가 정상 실행된다

처음 이 개념을 배울때는 전역함수가 더 편하다고 생각했지만 오히려 반대다


전역 변수 Local Variable 사용 시 주의할 점

  • 함수 내에서 전역 변수의 값을 바꾸려 할 경우

변수명이 같아도 전역 변수와 지역 변수는 다른 개념이기때문에 A값이 바뀌진 않는다

그래서 print(A)를 했을 때 전역 변수 A의 값이 출력된다

 

  • 전역 변수 사용과 지역 변수 할당을 같이 하는 경우

항상 에러가 뜨면 어떤 에러인지 확인해보자

지역 변수 A가 선언되기 전에 print(A)를 해서 에러가 떴다.

전역 변수는 선언된 이후 코드에 영향을 주지만 함수안에서는 따로 호출하지 않으면 사용할 수 없다.

 

  • 함수 안에서 전역 변수를 호출하는 방법

함수 안에서 global A를 써서 전역 변수를 호출하면 함수 안에서 전역 변수 A를 사용할 수 있다.

이렇게 사용할 때는 전역 변수 A의 위치에 따라 A값에 차이가 생긴다


전역 변수를 권장하지 않는 이유

전역 변수가 많아지고 필요에 따라 함수로 전역 변수를 호출하고 변경한다면

그 이후 코드에도 모두 영향을 미치기 때문에 코드가 길어질수록 유지보수/관리에 힘들다.

그러니 변하지않는 상수값 등을 제외하면 전역 변수를 사용하지 않는 것이 좋다.

728x90
반응형
profile

코딩한걸음

@Joonyeol_Yoon

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!