□ 전역변수 : 함수 내부가 아닌 외부에 정의되어 전체 범위를 갖는 변수(프로그램 영역전체, 함수내부 엑세스기능)
□ 지역변수 : 함수 내부에서 정의되어 활용되는 변수
□ 파이썬 변수 스코프(영역)에 대한 이해는 정말 중요함
□ 변수 영역에 대한 이해 부족 시 잘못된 결과 값, 프로그램 종료등 문제가 발생할 수 있음
□ 함수내에서 전역변수를 사용하거나 전역변수의 변경, 수정(출력, 엑세스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 |