Почему класс subprocess.Popen не называется Subprocess? [закрыто]
-
09-06-2019 - |
Вопрос
Первичным классом в модуле подпроцесс
является имя Popen
, и он представляет подпроцесс. Popen
звучит так, как будто кто-то пытался заставить имя следовать некоторому формату именования функций, а не выбирать имя, которое фактически представляет объект. Кто-нибудь знает, почему он был выбран из-за чего-то простого, например, Подпроцесс
?
Решение
Теперь я не говорю, что это величайшее имя в мире, но здесь была идея, насколько я понимаю.
Изначально семейство popen находилось в модуле os и являлось реализацией почтенного posix popen. Переход к модулю подпроцесса был бы подходящим временем для их переименования, но я думаю, что сохранение Popen облегчает поиск в документах для тех, кто имеет долгую историю с python или даже для почтенных posix-функций.
С самого раннего воплощения posix Popen
всегда предназначалось для открытия Процесса и позволяло вам читать и писать из его stdio как файл. Таким образом, мнемоника для Popen
заключается в том, что оно является сокращением от ProcessOpen
в попытке что-то вроде, вроде бы, быть открытым.
Другие советы
subprocess.Popen
заменяет группу функций POSIX os.popenX
(которые имеют длинную историю). Я полагаю, что имя Popen
повышает вероятность того, что люди, привыкшие к старым функциям, смогут найти и использовать новые.
В PEP для подпроцесса (PEP 324) есть немного обсуждение имени модуля, но не класса Popen
. список PEP (предложения по улучшению Python) в целом - отличное место для начала, если вы ищем обоснование возможностей Python.
Полагаю, имя было выбрано, потому что заменяемая функциональность subprocess
ранее была в модуле os
как функция os.popen
. Могут быть даже способы автоматизировать миграцию между ними.