이전 기초 문법은 아래 링크를 참조해 주세요.
https://iot-lab.tistory.com/125
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
)선언자를 사용하면 전역변수에 접근이 가능하며,
대입한 숫자가 전역변수에 반영되어 있는 것을 출력에서 확인할 수 있습니다.
'프로그래밍 언어 > 파이썬 수학' 카테고리의 다른 글
03. [Python] NumPy 기초 : shape 함수 사용방법 (0) | 2020.07.07 |
---|---|
02. [Python] NumPy 기초 : NumPy 배열 사용방법 (0) | 2020.07.07 |
[Python] 파이썬 기초 문법 (0) | 2020.06.26 |
Anaconda에서 Jupyter Notebook 사용하는 방법 (0) | 2020.06.17 |
파이썬 아나콘다(Anaconda) 설치하기 (2) | 2020.06.16 |