Почему класс subprocess.Popen не называется Subprocess? [закрыто]

StackOverflow https://stackoverflow.com/questions/38197

  •  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 . Могут быть даже способы автоматизировать миграцию между ними.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top