range와 scope
사실 서로 별 관련은 없는 개념인데 겸사겸사 한꺼번에 정리한다.
range
- range는 기본 제공되는 함수이다.
- 기본적으로 지정된 값만큼의 범위를 가진다고 이해하는게 좋다.
- 총 3개의 인수를 전달할 수 있고, 각각의 경우에 따른 세부 기능이 다르다.
- 인수 1개 - 0에서부터 인수로 입력한 숫자 - 1만큼의 범위를 가진다.
- 인수 2개 - 시작할 지점과 마무리 지점을 순서대로 지정한다. 시작 지점은 표시한 숫자부터, 마무리 지점은 인수 - 1 지점까지의 범위를 가진다.
- 인수 3개 - 인수 2개와 거의 동일하지만 3번째 인수의 값만큼 값을 건너뛰는 범위를 가진다. 사실 인수 2개를 사용하는 방법에도 기본값인 1이 적용된다.
for i in range(4):
print(i, end=', ')
print("")
for i in range(2,6):
print(i, end=', ')
print("")
for i in range(2,10,3):
print(i, end=', ')
print("")
#########################
#실행 결과
0, 1, 2, 3,
2, 3, 4, 5,
2, 5, 8,
scope
- scope개념은 다른 언어의 지역변수, 전역변수 개념과 비슷하다.
- Local, Enclose, Module, Builtin 총 4가지 종류의 scope가 있는데 먼저 쓴 scope일 수록 좁은 범위를 의미한다.
- Local
- 이름 그대로 특정 범위 내에서만 유효
- 함수 내부에서 선언된 변수나 함수가 주로 속함
- Enclose
- 중첩된 함수가 존재하는 경우 적용
- 부모 함수에서 선언된 변수는 중첩 함수 내부에서도 유효
- Module
- Global 이라고도 표현하며, 이름그대로 해당 선언이 이루어진 지점 밑으로는 전부 유효
- Builtin
- 가장 광범위한 scope로서 파이썬에 내장된, 기본 제공함수들이 포함된 scope
- 예를 들면 길이를 리턴하는 len() 같은 함수들
- Local
- shadowing
- 더 넓은 scope를 가진 변수가 좁은 scope를 가진 변수에게 가려지는 것
- 동일한 이름의 변수를 선언할 경우 발생한다.
a = 9
def shadow():
a = 1
print(a)
shadow()
print(a)
#################
#실행 결과
1
9
'프로그래밍 > Python' 카테고리의 다른 글
Conda 기본 (0) | 2020.07.29 |
---|---|
Python - Class (0) | 2020.07.23 |
Python - Decorator (0) | 2020.07.22 |
Django 기본 (0) | 2020.07.07 |
Pyinstaller 사용해서 PyQt5 UI포함한 실행파일 빌드 방법 (2) | 2020.06.26 |