본문 바로가기
Python

[Python] 전역변수, 지역변수

by Mr.DonyStark 2023. 11. 1.

□ 전역변수 : 함수 내부가 아닌 외부에 정의되어 전체 범위를 갖는 변수(프로그램 영역전체, 함수내부 엑세스기능)

지역변수 : 함수 내부에서 정의되어 활용되는 변수

파이썬 변수 스코프(영역)에 대한 이해는 정말 중요함
변수 영역에 대한 이해 부족 시 잘못된 결과 값, 프로그램 종료등 문제가 발생할 수 있음
함수내에서 전역변수를 사용하거나 전역변수의 변경, 수정(출력, 엑세스X)이 필요한 경우는 global 키워드 사용

#예제1
x = 100 #전역변수 지정

#함수생성
def test():
    return x * 10
#함수호출 및 출력  
print(f'test 결과 : {test()}') # 지역변수는 없으며 전역변수로 지정되어있는 값이 있기때문에 값 출력

#예제2
y = 200 #전역변수 지정
#함수지정
def test2():
    global y
#전역변수 지정한 것을 해당 함수내부로 끌고와서 지역변수로 사용하겠다는 의미.
#해당 코드가 없다면 함수내에 변수를 지정했지만 지역변수를 지정안했기 때문에 오류발생.
    y += 10
    return y
#함수출력  
print(f'test 결과 : {test2()}')

 

#예제3
a = 20 #전역변수 지정
#함수정의
def local_test():
    a = 35 #지역변수
    return a

print('step1 : ', a)  #함수호출이 아닌 전역변수를 출력했기에 20 출력

a = 100        #전역변수 값 수정

print('step2 : ', a) #함수호출이 아닌 전역변수를 출력했기에 100 출력
print('step3 : ', local_test()) #함수를 출력했으므로 함수내에 지정된 지역변수로인하여 35출력

#예제4
x = 333 #전역변수
#함수정의
def cal_one():
    global x
    print(f'cal_one결과3 : {x}') #global 사용으로 전역변수 출력
    x = 444                      #위에서 global 사용을 하였기에 아무리 함수 내부의 지역변수 수정일지어도 전역변수 값 또한 바뀜 때문에 결과 5 출력이 444임
    return x
print(f'cal_one결과1 : {x}') #전역변수 출력
x = 666                      #전역변수 수정
print(f'cal_one결과2 : {x}') #전역변수 출력
print(f'cal_one결과4 : {cal_one()}') #함수호출로 지역변수 출력
print(f'cal_one결과5 : {x}') #함수호출로 지역변수 값이 출력되었으므로 이또한 지역변수 값이 출력

#예제5
#함수정의
def ds_test(x, y):
    global a
    a= 49       
    x, y = y, x
    b= 53          #지역변수
    b= 7           #지역변수 수정
    a= 135
    print('step 1 :', a, b, x, y)    
a, b, x, y = 8, 13, 33, 44       #전역변수
#함수호출 → 출력값 : 135 7 7 23
ds_test(23,7)
print('step 2 :', a, b, x, y) # → 출력값 : 135 13 33 44    /   함수정의 부분에서 global을 사용했고 내부에서 값을 수정했기때문에 135 출력됨

'Python' 카테고리의 다른 글

Views.py : render 함수와 템플릿  (0) 2024.04.15
앱(App) 생성 및 Urlpatterns 정의  (0) 2024.04.11