본문 바로가기
파이썬

[파이썬] 함수에서 변수의 사용 범위

by 코딩라이프 2022. 11. 20.
파이썬의 지역변수, 전역변수에 대해 알아보겠습니다.

 

  • 파이썬에서 변수를 사용할 때, 함수 바깥에서 정의된 변수와 함수내에서 정의된 변수는 다릅니다.
  • 함수 바깥에서 정의된 변수를 전역변수, 함수 내에서 정의된 변수를 지역변수라고 합니다.
  • 전역변수는 프로그램 전체 어디서든 사용할 수 있고, 지역변수는 해당 함수 내에서만 사용할 수 있습니다.
  • 함수 내에서 지역변수를 정의할 때 전역변수의 이름과 동일한 변수명을 사용할 수 있습니다.
  • 함수 내에서 지역변수를 정의할 때 다른 함수의 지역변수와 동일한 이름의 변수명을 사용할 수 있습니다.


코드를 통해 지역변수와 전역변수를 알아보겠습니다.

 

■ 전역변수

  • 함수 밖에서 생성된 변수.
  • 함수 안,밖 어디서든 사용할 수 있다.
say1 = 'hello'     # 전역변수

def sayhello():
    print(say1)    # 함수 내에서 전역변수 say1 사용 (ok)
    
sayhello()

[출력결과] hello

 

 

 

■ 지역변수

  • 함수 내에서 생성된 변수
  • 해당 함수 내에서만 사용할 수 있다.
def saygoodbye():
    say2 = 'goodbye' # 지역변수 say2
    print(say2)      # 함수 내에서 지역변수 say2 사용(ok)


saygoodbye()         # 함수 실행 --> say2 출력
print(say2)          # 함수 밖에서 지역변수 say2 사용 시도 --> NameError

[출력 결과]

함수 밖에서 지역변수 say2 출력을 시도했을 때 NameError가 발생

 

 

■ 전역변수와 지역변수 우선순위

  • 함수 내에서 변수를 사용할 때에는 지역변수에 우선순위가 있다.
  • 즉, 함수 내에서 정의한 지역변수와 동일한 이름의 전역변수가 존재한다고 했을 때, 지역변수를 사용한다.
n1 = 1            # 전역변수 n1에 1 할당
n2 = 10

def myFunc1():    
    n1 = 2        # myFunc1 함수의 지역변수 n1에 2 할당
    print(n1)

def myFunc2():    
    n1 = 3       # myFunc2 함수의 지역변수 n1에 2 할당
    print(n1)
    
print(n1)        # 전역변수 n1의 값 출력
myFunc1()        # myFunc2 함수의 지역변수 n1의 값 출력
myFunc2()        # myFunc3 함수의 지역변수 n1의 값 출력

[ 출력결과 ]

1

2

3

 

 

■ 함수 내에서 전역변수의 값 변경하기

  • 함수 내에서 전역변수 값을 변경하려면 'global' 키워드로 전역변수를 사용하겠다거 선언한다.
  • global을 사용하지 않으면 동일한 이름의 지역변수가 생성되어 사용된다.
n1 = 1
n2 = 10

def myFunc():
    global n1   # 전역변수 n1을 사용하겠다고 선언
    n1 = 2      # 전역변수 n1에 2 할당
    print(n1)   # 전역변수 n1 출력

print(n1)         
myFunc()

[ 출력결과 ]

2

2