Following system colour scheme Selected dark colour scheme Selected light colour scheme

Python 개선 제안 한국어 번역

PEP 260 – xrange() 간소화

Author:
Guido van Rossum <guido at python.org>
Status:
Final
Type:
Standards Track
Created:
26-Jun-2001
Python-Version:
2.2
Post-History:
26-Jun-2001

Table of Contents

번역·라이선스 안내

이 비공식 한국어 번역은 원문 Copyright 절의 Public Domain 조건에 따라 제공합니다. 원저자와 공식 원문은 그대로 표시합니다. 수정되지 않은 기준 원문 · 공식 최신판

초록

이 PEP는 xrange() 객체에서 x[i:j]x*n과 같은 일부 드물게 사용되는 동작을 제거할 것을 제안합니다.

문제

xrange() 함수에는 관용적인 용도가 하나 있습니다.:

for i in xrange(...): ...

그러나 xrange() 객체에는 시퀀스와 더 유사하게 만들려고 하는, 드물게 사용되는 동작이 많이 있습니다. 이러한 동작은 매우 드물게 사용되므로, 역사적으로 여러 릴리스 동안 발견되지 않은 심각한 버그(예: 오프바이원 오류)가 있었습니다.

저는 이러한 사용되지 않는 기능을 제거하는 편이 낫다고 주장합니다. 이렇게 하면 구현, 테스트 및 문서화가 단순해지고, 유지 관리 부담과 코드 크기가 줄어듭니다.

제안하는 해결책

xrange() 객체를 최소한으로 축소할 것을 제안합니다. 유지되는 유일한 시퀀스 동작은 x[i], len(x)repr(x)뿐입니다. 특히 다음 동작은 제거됩니다.

  • x[i:j] (슬라이싱)
  • x*n, n*x (시퀀스 반복)
  • cmp(x1, x2) (비교)
  • i in x (포함 검사)
  • x.tolist() 메서드
  • x.start, x.stop, x.step 속성

저는 또한 PyRange_New() C API의 시그니처를 변경하여 네 번째 인자(반복 횟수)를 제거할 것을 제안합니다.

사용자 정의 이터레이터 타입을 구현하면 일반적인 사용에서 속도를 높일 수 있지만, 이는 선택 사항입니다(기본 시퀀스 이터레이터로도 충분합니다).

범위

이 PEP는 xrange() 내장 함수와 PyRange_New() C API에 영향을 미칩니다.

위험

누군가의 코드가 확장된 코드에 의존하고 있을 수 있으며, 이 경우 해당 코드는 깨질 것입니다. 하지만 역사적으로 확장된 코드의 버그가 그렇게 오랫동안 발견되지 않았던 것을 고려하면, 영향을 받는 코드가 많지는 않을 것 같습니다.

전환

하위 호환성을 위해 기존 기능은 Python 2.2에서도 여전히 존재하겠지만, 경고를 발생시킬 것입니다. Python 2.2 최종판이 릴리스된 지 1년 후(아마도 2.4에서) 해당 기능은 제거될 것입니다.