본문 바로가기
programming/python

[PY] 파이썬의 global과 nonlocal

by AteN 2022. 11. 23.

파이썬에서 `global`과 `nonlocal`은 변수의 스코프와 관련된 키워드입니다. 다음은 각각의 사용법을 설명합니다:

 

global 키워드

   - global 키워드는 함수 내에서 전역 변수를 사용하고자 할 때 사용
   - 함수 내부에서 전역 변수를 사용하려면 `global` 키워드를 사용하여 변수를 전역 변수로 선언하며, 이를 통해 함수 내에서 전역 변수의 값을 읽고 수정할 수 있습니다.
   - global 키워드는 변수가 함수 외부에서 정의되었음을 나타냅니다.

   count = 0

   def increment():
       global count
       count += 1

   print(count)  # 출력: 0
   increment()
   print(count)  # 출력: 1

 count 변수는 함수 외부에서 정의되었으며 함수 내부에서 사용하고자 할 때 `global` 키워드를 사용

nonlocal 키워드

   - nonlocal 키워드는 중첩 함수에서 외부 함수의 변수를 사용하고자 할 때 사용됩니다.
   - 중첩 함수 내부에서 외부 함수의 변수를 읽거나 수정하려면 `nonlocal` 키워드를 사용하여 변수를 nonlocal 변수로 선언해야 합니다.
   - 이를 통해 중첩 함수에서 외부 함수의 변수에 접근할 수 있습니다.
   - nonlocal 키워드는 변수가 가장 가까운 외부 함수에 정의되었음을 나타냅니다.

 def outer():
       x = 1

       def inner():
           nonlocal x
           x += 1
           print(x)  # 출력: 2

       inner()

   outer()

`x` 변수는 `outer` 함수에 정의되었고 `inner` 함수에서 사용하고자 할 때 `nonlocal` 키워드를 사용

global과 nonlocal 키워드를 사용할 때에는 주의해야 합니다. 이러한 키워드를 남발하면 코드의 가독성을 저하시킬 수 있고, 변수의 스코프와 관련된 오류를 발생시킬 수 있습니다. 따라서 전역 변수와 중첩 함수의 변수 사용은 필요한 경우에만 사용하는 것이 좋습니다.

댓글