2008-09-01 3 views
3

Die primäre Klasse im Modul subprocess ist der Name Popen und repräsentiert einen Unterprozess. Popen klingt wie jemand versuchte, den Namen zu zwingen, einem Funktionsbenennungsformat zu folgen, anstatt einen Namen zu wählen, der tatsächlich darstellt, was das Objekt ist. Weiß jemand, warum es über etwas einfaches gewählt wurde, sagen wir Subprocess?Warum wird die Klasse subprocess.Popen nicht als Teilprozess bezeichnet?

Antwort

7

Nun, ich sage nicht, dass dies der größte Name der Welt ist, aber hier war die Idee, wie ich es verstehe.

Ursprünglich war die Popen-Familie im os-Modul und war eine Implementierung des ehrwürdigen posix popen. Die Umstellung auf das Subprozess-Modul wäre ein guter Zeitpunkt gewesen, sie umzubenennen, aber ich denke, dass das Halten von Popen es einfacher macht, in den Dokumenten für diejenigen zu finden, die eine lange Geschichte mit Python oder sogar den ehrwürdigen Posix-Funktionen haben.

Von seiner frühesten posix Inkarnation, Popen war immer beabsichtigt, einen Prozess zu öffnen und Ihnen zu erlauben, von seinem stdio wie einer Datei zu lesen und zu schreiben. Also die Mnemonic für Popen ist, dass es kurz ist für ProccesOpen in einem Versuch, Art, sorta, wie offen aussehen.

-1

Ich nehme an, der Name wurde gewählt, weil die Funktionalität subprocess ersetzt wurde früher im os Modul als os.popen Funktion. Es könnte sogar Möglichkeiten geben, die Migration zwischen den beiden zu automatisieren.

5

subprocess.Popen ersetzt die Gruppe os.popenX POSIX-Funktionen (die eine lange Geschichte haben). Ich nehme an, dass der Name Popen es wahrscheinlicher macht, dass Leute, die die alten Funktionen gewohnt sind, die neuen finden und benutzen.

Die PEP for subprocess (PEP 324) hat ein wenig Diskussion über den Namen des Moduls, aber nicht der Klasse Popen. Die list of PEPs (Python-Verbesserungsvorschläge) ist im Allgemeinen ein ausgezeichneter Ausgangspunkt, wenn Sie nach dem Grund für die Funktionen von Python suchen.