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

Python 개선 제안 한국어 번역

PEP 3139 – sys 및 “인터프리터” 모듈 정리

Author:
Benjamin Peterson <benjamin at python.org>
Status:
Rejected
Type:
Standards Track
Created:
04-Apr-2008
Python-Version:
3.0

Table of Contents

번역·라이선스 안내

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

거부 통지

Guido의 -0.5로 이 PEP는 종료되었습니다. 다음을 참조하십시오: https://mail.python.org/pipermail/python-3000/2008-April/012977.html.

초록

이 PEP는 sys 모듈을 정리하고 일반적인 Python 기능을 구현 세부 사항에서 분리하기 위해 CPython 전용 인터프리터 함수를 위한 새로운 저수준 모듈을 제안합니다.

근거

sys 모듈에는 현재 두 가지 주요 그룹으로 나눌 수 있는 함수와 데이터가 포함되어 있습니다.

  1. 모든 Python 구현에서 사용할 수 있고 Python 가상 머신의 일반적인 실행을 다루는 데이터와 함수입니다.
    • argv
    • byteorder
    • path, path_hooks, meta_path, path_importer_cache 및 modules
    • copyright, hexversion, version 및 version_info
    • displayhook, __displayhook__
    • excepthook, __excepthook__, exc_info 및 exc_clear
    • exec_prefix 및 prefix
    • executable
    • exit
    • flags, py3kwarning, dont_write_bytecode 및 warn_options
    • getfilesystemencoding
    • get/setprofile
    • get/settrace, call_tracing
    • getwindowsversion
    • maxint 및 maxunicode
    • platform
    • ps1 및 ps2
    • stdin, stderr, stdout, __stdin__, __stderr__, __stdout__
    • tracebacklimit
  2. CPython 인터프리터에 영향을 미치는 데이터와 함수입니다.
    • get/setrecursionlimit
    • get/setcheckinterval
    • _getframe 및 _current_frame
    • getrefcount
    • get/setdlopenflags
    • settscdumps
    • api_version
    • winver
    • dllhandle
    • float_info
    • _compact_freelists
    • _clear_type_cache
    • subversion
    • builtin_module_names
    • callstats
    • intern

두 번째 항목 모음은 수년에 걸쳐 꾸준히 증가하여 sys를 복잡하게 만들었습니다. Guido는 심지어 그 안에 있는 일부 항목을 알아보지 못한다고까지 말했습니다 [1]!

이러한 항목을 다른 모듈로 옮기면 다른 Python 구현에 어떤 함수를 구현해야 하고 어떤 함수를 구현할 필요가 없는지 명확한 메시지를 전달할 수 있습니다.

types 모듈의 내용을 표준 라이브러리 전반에 분산하자는 제안도 있었습니다 [2]; 인터프리터 모듈은 프레임과 코드 객체 같은 내부 타입을 보관하기에 매우 적합한 장소가 될 것입니다.

명세

“인터프리터”라는 새 내장 모듈이 추가됩니다(Naming을 참조하십시오).

위의 두 번째 항목 목록은 다음과 같이 표준 라이브러리로 나뉩니다.

인터프리터 모듈
  • get/setrecursionlimit
  • get/setcheckinterval
  • _getframe 및 _current_frame
  • get/setdlopenflags
  • settscdumps
  • api_version
  • winver
  • dllhandle
  • float_info
  • _clear_type_cache
  • subversion
  • builtin_module_names
  • callstats
  • intern
gc 모듈:
  • getrefcount
  • _compact_freelists

전환 계획

3.x에서 구현되면 인터프리터 모듈이 2.6으로 역포팅됩니다. 이를 대체하는 sys 함수에 Py3k 경고가 추가됩니다.

미해결 문제

무엇을 옮겨야 합니까?

dont_write_bytecode

일부는 바이트코드 작성이 구현 세부 사항이므로 [3] 옮겨야 한다고 생각합니다. 이에 대한 반론은 현재 완전한 모든 Python 구현이 어떤 형태로든 바이트코드를 작성하므로, 이를 비활성화할 수 있는 것이 가치 있다는 것입니다. 또한 이를 옮긴다면 일부는 imp 모듈에 넣기를 원합니다.

일부를 imp로 옮깁니까?

dont_write_bytecode 또는 어쩌면 builtin_module_names를 imp 모듈에 넣으면 잘 어울릴 수 있다는 의견이 제기되었습니다.

명명

작성자는 새 모듈의 이름으로 “인터프리터”를 제안합니다. “pyvm”도 제안된 바 있으며 [4], “cpython”이라는 이름도 좋은 반응을 얻었습니다 [5]. “cpython”이라는 이름도 좋은 반응을 얻었습니다 [5].

참고 자료