본문 바로가기
Dev/Python

global, nonlocal ( 전역, 지역 변수 )

by 석맨.class 2023. 9. 13.
반응형

들어가기 전에...

  • 먼저 전역, 지역 변수에 대한 이해가 있어야함.

global

파이썬에서는 함수내에서 전역변수를 사용하려면 global 키워드를 사용해야 한다.
바로 예제부터 보자.

g = 1

def test():
  g = 2
  print(g)

test()
print(g)

# 결과
# 2
# 1

test 함수 내부에서 선언한 g = 2 는 전역변수 g = 1 이 아닌 새롭게 선언된 변수가 된다.
따라서 전역변수 g를 가져와서 사용하려면 함수내에서 global 키워드를 붙여서 선언 후 사용해야 한다.

g = 1

def test():
  global g 
  g = 2
  print(g)

test()
print(g)

# 결과
# 2
# 2

nonlocal

함수가 중첩되어 전역변수를 사용하려면 nonlocal 키워드로 선언해주어야 한다.

a = 0

def outer():
  global a
  a += 1
  print(a)

  b = 1
  def inner():
    global b
    b += 1 # 에러 발생
    print(b)

  inner()

print(a)
outer()

outer() 함수내부에서 선언된 지역변수b 를
outer()함수 내부의 inner()함수 에서 사용하기위해 global 키워드를 사용했지만,
해당 전역변수 b가 없다는 에러를 발생시킨다.

지역변수를 사용하기 위해서는 전역변수와 같이 nonlocal 키워드로 미리 선언하고 사용해야한다.

a = 0

def outer():
  global a
  a += 1
  print(a)

  b = 1
  def inner():
    nonlocal b
    b += 1
    print(b)

  inner()

print(a)
outer()

# 결과
# 0
# 1
# 2

'Dev > Python' 카테고리의 다른 글

python - self 매개변수에 대해  (0) 2023.09.18
클래스  (0) 2023.09.14
[python, venv, virtualenv] 파이썬 버전관리 - virtualenv  (0) 2023.09.12
python 함수  (0) 2023.09.12
print 에서 end  (0) 2023.09.12