프로그래밍/Python

Python-22) 지역변수 , 전역변수 : python global

LeeSeunghyuk 2020. 12. 24. 17:39
반응형

파이썬 지역변수와 전역변수에 대한 개념입니다.

 

- 이름공간(name space)

 

    이름공간은 프로그램 전체 범위의 이름을 담는 전역 이름공간,

    한정적인 문맥의 이름을 담는 지역 이름공간으로 구별됩니다.

 

- 지역변수(local variable) 

     변수는 자신이 생성된 범위(코드블럭) 안에서만 유효합니다.

     함수 안에서 만든 변수는 함수 안에서만 살아있다가 함수 코드의 실행이 종료되면 사라집니다.

     즉, 해당 함수가 실행될 때만 변수로써 사용할 수 있습니다.

 

- 전역변수(global variable)

     반대로 함수 외부에서 만든 변수는 프로그램이 살아있는 동안

     함께 살아있다가 프로그램이 종료되면 같이 소멸됩니다.

     이렇게 프로그램 전체를 유효범위로 가지는 변수를 '전역변수'라고 한다.

 


pi=3.14 # 전역변수 pi
def circle(r):
    radius=r # 지역변수 radius
    return r*r*pi

circle(10) 

1. pi : 프로그램 전체에서 pi라는 변수명으로 사용될 수 있는 전역변수

2. radius : 함수 내에서만 존재하는 , 함수가 끝나면 사용할 수 없는 지역변수

 

- 함수 밖에서 지역변수 사용

pi=3.14 # 전역변수 pi
def circle(r):
    radius=r # 지역변수 radius
    return r*r*pi

print(circle(10))
print(radius)

     NameError : radius는 정의되지 않았음

     -> 지역변수로 circle 함수 내에서만 사용 가능합니다

 

 

- 함수 내 전역변수 수정

pi=3.14 # 전역변수 pi
def circle(r):
    radius=r # 지역변수 radius
    pi=pi*10
    return r*r*pi

print(circle(10))

 

     지역변수 pi가 할당되기 전에 사용되었다는 에러가 발생합니다.

     전역변수 pi를 사용하기 위해서는 앞에 global을 사용해 함수 내에서 선언합니다.

.pi=3.14 # 전역변수 pi

def circle(r):
    radius=r # 지역변수 radius
    global pi # 전역변수임을 선언
    pi=pi*10
    return r*r*pi

print(circle(10))
print(pi) # 전역변수 pi

     global pi를 사용해 함수 내에서 사용하는 pi변수가 전역변수임을 선언합니다.

     정상적으로 pi 변수가 사용되며, 최종적으로 전역변수의 값도 변경되었습니다.

 

반응형