본문 바로가기

프로그래밍 언어/파이썬 수학

파이썬3 기초 문법(Python 3) - 스코프(scope)

이전 기초 문법은 아래 링크를 참조해 주세요.

https://iot-lab.tistory.com/125

 

파이썬 기초 문법(Python)

개요 파이썬은 다루기가 비교적 쉬워서 인공지능이나 수학분야에도 많이 사용되는 프로그래밍 언어입니다. 파이썬의 기본 문법을 알아보도록 하겠습니다. 파이썬이란? 파이썬은 심플한 프로그

iot-lab.tistory.com

10. 스코프

변수에는 스코프가 있습니다.
쉽게 말해 변수는 스코프라는 접근가능한 영역이 존재합니다.
이것을 스코프라고 합니다.

스코프 별 변수의 종류

  • 지역 변수 : 함수 내에 선언된 변수
    • 선언 된 함수 내에서만 접근 가능 로컬 변수라고도 함
    • 함수 내부가 변수의 스코프가 됨
  • 전역 변수 : 함수 외에 선언된 변수로 글로벌 변수라고도 함
    • 함수 관계없어 어디서든 접근 가능함
    • 함수 내부 외부가 변수의 스코프가 됨

사용예제(1)

스코프 테스트
[In]

a = 123     # 전역변수

def print_number():
    b = 456         # 지역변수
    print(a, b)     # 함수내에서 지역변수와 전역 변수에 접근 가능

print_number()

# 변수 접근 테스트
print(a)    # 정상 동작
print(b)    # 에러 발생!!!

[출력]

123 456
123
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-1-515ef1afbf99> in <module>
      9 # 변수 접근 테스트
     10 print(a)    # 정상 동작
---> 11 print(b)    # 에러 발생!!!

NameError: name 'b' is not defined

사용예제(2)

전역변수 사용시 주의사항

  • 함수내에서 전역변수과 같은 이름으로 변수를 선언하면 지역변수로 취급됩니다.

[In]

a = 123     # 전역변수

def test():  
a = 456 # 지역변수로 취급됨  
print("Local:", a)

test()  
print("Global:", a) # 전역변수 값은 변하지 않음

[출력]


Local: 456  
Global: 123

지역변수와 전역변수가 a로 이름이 같지만 각자 다른 값을 출력하는 것을 볼 수 있습니다.
결론은 두 변수는 이름은 같지만 다른 변수라는 것을 알 수 있습니다.

사용예제(3)

함수 인자값으로 사옹되는 변수의 스코프

  • 함주의 인자값으로 전역변수를 같은 이름으로 사용한다해도 인수값은 지역변수로 취급됩니다.

[In]


a = 123 전역변수

def test(a):  
print("Local:", a)

test(456)  
print("Global:", a)

[출력]


Local: 456  
Global: 123

사용예제(4)

함수내에서 전역변수에 접근하는 방법
선언자

  • global
  • nonlocal

[In]


a = 123 전역변수

def test():  
global a # 전역변수를 사용하는 방법 : nonlocal로도 선언 가능  
a = 456  
print("Global:", a)

test()  
print("Global:", a)

[출력]


Global: 456  
Global: 456

global(nonlocal)선언자를 사용하면 전역변수에 접근이 가능하며,
대입한 숫자가 전역변수에 반영되어 있는 것을 출력에서 확인할 수 있습니다.