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

Python Enhancement Proposals

PEP 3139 – Aufräumen von sys und dem "interpreter"-Modul

Autor:
Benjamin Peterson <benjamin at python.org>
Status:
Abgelehnt
Typ:
Standards Track
Erstellt:
04-Apr-2008
Python-Version:
3.0

Inhaltsverzeichnis

Ablehnungsbescheid

Guidos -0,5 beendete diesen PEP. Siehe https://mail.python.org/pipermail/python-3000/2008-April/012977.html.

Zusammenfassung

Dieser PEP schlägt ein neues Low-Level-Modul für CPython-spezifische Interpreter-Funktionen vor, um das sys-Modul aufzuräumen und allgemeine Python-Funktionalität von Implementierungsdetails zu trennen.

Begründung

Das sys-Modul enthält derzeit Funktionen und Daten, die in zwei Hauptgruppen eingeteilt werden können

  1. Daten und Funktionen, die in allen Python-Implementierungen verfügbar sind und sich mit der allgemeinen Ausführung einer Python-virtuellen Maschine befassen.
    • argv
    • byteorder
    • path, path_hooks, meta_path, path_importer_cache und modules
    • copyright, hexversion, version und version_info
    • displayhook, __displayhook__
    • excepthook, __excepthook__, exc_info und exc_clear
    • exec_prefix und prefix
    • executable
    • exit
    • flags, py3kwarning, dont_write_bytecode und warn_options
    • getfilesystemencoding
    • get/setprofile
    • get/settrace, call_tracing
    • getwindowsversion
    • maxint und maxunicode
    • platform
    • ps1 und ps2
    • stdin, stderr, stdout, __stdin__, __stderr__, __stdout__
    • tracebacklimit
  2. Daten und Funktionen, die den CPython-Interpreter beeinflussen.
    • get/setrecursionlimit
    • get/setcheckinterval
    • _getframe und _current_frame
    • getrefcount
    • get/setdlopenflags
    • settscdumps
    • api_version
    • winver
    • dllhandle
    • float_info
    • _compact_freelists
    • _clear_type_cache
    • subversion
    • builtin_module_names
    • callstats
    • intern

Die zweite Sammlung von Elementen ist im Laufe der Jahre stetig gewachsen und hat das sys-Modul unübersichtlich gemacht. Guido hat sogar gesagt, dass er einige Dinge darin nicht erkennt [1]!

Das Auslagern dieser Elemente in ein anderes Modul würde anderen Python-Implementierungen eine klare Botschaft darüber senden, welche Funktionen implementiert werden müssen und welche nicht.

Es wurde auch vorgeschlagen, den Inhalt des types-Moduls auf die Standardbibliothek zu verteilen [2]; das interpreter-Modul würde einen hervorragenden Aufenthaltsort für interne Typen wie Frames und Code-Objekte bieten.

Spezifikation

Ein neues integriertes Modul namens "interpreter" (siehe Namensgebung) wird hinzugefügt.

Die zweite Liste der obigen Elemente wird wie folgt auf die Standardbibliothek aufgeteilt

Das interpreter-Modul
  • get/setrecursionlimit
  • get/setcheckinterval
  • _getframe und _current_frame
  • get/setdlopenflags
  • settscdumps
  • api_version
  • winver
  • dllhandle
  • float_info
  • _clear_type_cache
  • subversion
  • builtin_module_names
  • callstats
  • intern
Das gc-Modul
  • getrefcount
  • _compact_freelists

Migrationsplan

Nach der Implementierung in 3.x wird das interpreter-Modul nach 2.6 zurückportiert. Py3k-Warnungen werden zu den ersetzten sys-Funktionen hinzugefügt.

Offene Fragen

Was soll verschoben werden?

dont_write_bytecode

Einige glauben, dass das Schreiben von Bytecode ein Implementierungsdetail ist und verschoben werden sollte [3]. Das Gegenargument ist, dass alle aktuellen, vollständigen Python-Implementierungen eine Art Bytecode schreiben, so dass es wertvoll ist, ihn deaktivieren zu können. Außerdem, wenn es verschoben wird, möchten einige es in das imp-Modul legen.

Verschieben zu einem imp?

Es wurde angemerkt, dass dont_write_bytecode oder vielleicht builtin_module_names gut in das imp-Modul passen könnten.

Benennung

Der Autor schlägt den Namen "interpreter" für das neue Modul vor. "pyvm" wurde ebenfalls vorgeschlagen [4]. Der Name "cpython" gefiel gut [5].

Referenzen


Quelle: https://github.com/python/peps/blob/main/peps/pep-3139.rst

Zuletzt geändert: 2025-02-01 08:59:27 GMT