python) 변수의 유효 범위

휘이·2021년 12월 28일
0

변수란?

 
컴퓨터 프로그래밍에서 '변수'란, 새로운 값이나 정보를 담을 수 있는 컨테이너라고 보면 된다.

 

예를 들어, 다음과 같은 파이썬 코드가 있다고 해보자.

a = '사과'
b = '바나나'
c = 3

print(a)
print(b)
print(c)

 

실행 결과

사과

바나나

3

a와 b, c를 출력했는데, 사과, 바나나, 3이 출력되었다. 해석하자면, a,b,c는 변수이고 사과, 바나나, 3이라는 정보와 값을 담는 컨테이너 역할을 하는 것이다.

그렇다면 프로그래밍에서는 아무데나 변수를 선언하고 아무데서나 변수를 사용할 수 있을까?

답은 아니다.이다.
 

프로그래밍에서 변수는 영향을 끼칠 수 있는 유효범위가 한정되어 있다. 특정 위치에서 변수에 접근 할 수 있는지, 혹은 한 곳에서 정의된 변수가 어디까지 유효한지 정의된 범위를 변수의 범위, SCOPE라고 한다.

이 변수의 범위에 따라, 지역변수 Local variable, 전역변수 global variable, 정적 변수(static variable) 등이 있다.
 

전역변수 global variable

  

전역 변수는 어느 지역에서나 접근할 수 있는 변수이다.

global scope의 영향력을 끼친다.

  

greeting = 'Hello'

def say_hello():
    print(greeting)
# say_hi() 함수의 밖에 정의된 변수(greeting), 'Hello'를 읽어옵니다.

say_hello()

greeting = 'hi'
# greeting 변수는 문자열 'hi'로 변경됨

say_hello()

  

실행 결과

Hello

hi

  

지역변수 local variable

  
지역 변수란 '블록'내에서 선언된 변수를 의미합니다.

local scope의 영향력을 끼친다.

  

greeting = 'Hello'

def change_greeting():
    greeting = 'hi'
    # 여기서 greeting 해당 함수 내에서만 문자열 'Hello'를 가리킵니다.

change_greeting()
# 함수를 호출해도 아무 일도 일어나지 않습니다.

print(greeting)
# 첫 줄, 즉 함수 바깥에서 정의된 문자열 '하루'가 출력됩니다.

  

실행 결과

Hello

즉, 위의 코드에서 greeting = 'Hello'는 함수 내부를 포함해 코드 어디에서든 참조할 수 있으므로, 전역 변수라고 할 수 있습니다. 반대로 greeting = 'hi'change_greeting() 내부에서 정의되어 밖에서 볼 수 없으므로, 지역변수입니다.
 

함수에서 전역변수 참고하기

  
함수내에서 전역변수를 참고하려면, 함수내에서 global 전역변수명을 따로 추가해 주어야 한다.

다음 코드 참고

greeting = 'Hello'

def change_greeting():
    global greeting
    greeting = 'hi'
    # 여기서 greeting 해당 함수 내에서만 문자열 'Hello'를 가리킵니다.

change_greeting()
# 함수를 호출해도 아무 일도 일어나지 않습니다.

print(greeting)
# 첫 줄, 즉 함수 바깥에서 정의된 문자열 '하루'가 출력됩니다.

 

실행 결과

hi

  

정적 변수

는 다음에 ^^/




용어설명
  • 블록

    마치 한 문단처럼 보이는, 코드의 한 부분을 뜻하며, 중괄호로 묶여 있는 경우가 많다. 보통 1개 이상의 명령어를 가지고 있으나, 주석으로 이루어진 블록이나, 아무 내용도 없는 빈 블록도 가능하다.

profile
튜토리얼에도 고난과 역경이 있다.

0개의 댓글