본문 바로가기
Computer & Program/python

[python] 지역변수 & 전역변수

by TDRemon 2024. 2. 23.
반응형

안녕하세요. 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

댓글