subprocess
モジュールのプライマリ クラスは namePopen
で、サブプロセスを表します。Popen
オブジェクトが何であるかを実際に表す名前を選択するのではなく、誰かが関数の命名形式に従うように名前を強制しようとしているようです。のような単純なものよりもなぜそれが選ばれたのか、誰かが知っていますSubprocess
か?
3 に答える
これが世界で最も偉大な名前だと言っているわけではありませんが、私が理解しているアイデアは次のとおりです。
もともと popen ファミリーは os モジュールにあり、由緒ある posix popen の実装でした。subprocess モジュールへの移行は、それらの名前を変更する絶好の機会だったでしょうが、Popen を維持することで、Python や由緒ある posix 関数に長い歴史を持つ人にとって、ドキュメントで見つけやすくなると思います。
初期の posix 化身から、Popen
常にプロセスを開き、ファイルのように標準入出力から読み書きできるようにすることを意図していました。したがって、ニーモニックの forPopen
は、ProcessOpen
オープンのように見えるようにするための略です。
subprocess.Popen
os.popenX
(長い歴史を持つ) POSIX 関数のグループを置き換えます。名前のおかげでPopen
、古い機能に慣れている人が新しい機能を見つけて使用しやすくなっていると思います。
subprocessのPEP (PEP 324)には、モジュールの名前について少し議論がありますが、クラスの名前については議論されていませんPopen
。PEP (Python 拡張提案)のリストは、一般に、Python の機能の根拠を探している場合に開始するのに最適な場所です。
この名前が選ばれたのは、以前は関数としてモジュールsubprocess
にあった機能が置き換えられたためだと思います。2 つの間の移行を自動化する方法さえあるかもしれません。os
os.popen