반응형
안녕하세요. TDR입니다.
오늘은 python의 조금 특이한 전역변수 및 지역변수 대해서 정리해 보겠습니다.
global_var01 = 'global_var01'
def main_func():
global global_var01
global global_var02
global_var02 = 'global_var02'
main_var = 'main_var'
global_var01 = 'edit sub_func : global_var01'
print(main_var) # main_var
def sub_func():
nonlocal main_var
print(main_var) # main_var
main_var = 'edit sub_func : main_var'
print(main_var) # edit sub_func : main_var
sub_func()
print(main_var) # edit sub_func : main_var
print(global_var01) # global_var01
main_func()
print(global_var01) # edit sub_func : global_var01
print(global_var02) # global_var02
눈여겨 봐야 하는 부분은 3군데 입니다.
하나는 main_func()안의 global_var01입니다. 첫번째 줄에 global 변수로 선언한 값을 global 키워드를 붙여서 다시 선언하고 있습니다. 그리고 그 밑에서 새로운 값을 집어 넣고 있습니다. 이걸 통해 밑에 global_var01을 출력했을 때 함수를 호출하기 전과 후에 global 변수 값이 변경된 것을 알 수 있습니다.
두번째는 main_func()안의 global_var02를 global 키워드로 생성하는 부분입니다. 일반적으로 global 변수는 함수들 밖, 주로 가장 위쪽에 선언을 합니다. 하지만 global_var02는 함수 안에서 생성을 했습니다. 이를통해 global 키워드를 사용하면 어디서든 global 변수를 생성할 수 있음을 알 수 있습니다.
세번째는 sub_func()안의 nonlocal main_var 부분입니다. 분명 main_var는 main_func()에서 생성한 변수입니다. 하지만 nonlocal 키워드를 바깥 함수의 변수 값을 수정하는 것을 볼 수 있습니다. 즉, nonlocal 키워드를 사용하면 바깥 함수에서 선언한 변수를 수정할 수 있음을 알 수 있습니다.
반응형
'Computer & Program > python' 카테고리의 다른 글
[python] class(클래스) - 02 (1) | 2024.02.25 |
---|---|
[python] class(클래스) - 01 (0) | 2024.02.24 |
[python] function(함수) - 02 (0) | 2024.02.22 |
[python] function (함수) - 01 (1) | 2024.02.21 |
[python] closure(클로저) (0) | 2024.02.17 |
댓글