2008-09-01 9 views
3

subprocess 모듈의 기본 클래스는 이름이 Popen이며 하위 프로세스를 나타냅니다. Popen 누군가가 실제로 어떤 객체인지 나타내는 이름을 선택하는 대신 이름을 일부 함수 이름 지정 형식을 따르도록 강요하는 것처럼 들립니다. 왜 누군가가 왜 단순한 무언가, 예를 들어 Subprocess과 같이 선택되었다는 것을 알고 있습니까?subprocess.Popen 클래스의 이름이 Subprocess가 아닌 이유는 무엇입니까?

답변

7

이제 세계에서 가장 위대한 이름이라고 말하지는 않겠지 만, 내가 이해하는대로 아이디어가 여기에 있습니다.

원래 popen 패밀리는 os 모듈에 있었으며 훌륭한 posix popen을 구현했습니다. 하위 프로세스 모듈로 이동하면 이름을 바꿀 적절한시기가 되었 겠지만 Popen을 유지하면 Python 또는 오랜 역사가있는 훌륭한 POSIX 함수를 사용하는 사람들이 쉽게 찾을 수 있습니다.

최초의 posix 화신 인 Popen은 항상 Process를 열고 파일처럼 stdio에서 읽고 쓸 수 있도록 만들어졌습니다. 따라서 Popen에 대한 니모닉은 ProccesOpen의 줄임말로 열리는 것처럼 보입니다.

-1

subprocess이 (가) os 모듈의 이전 버전 인 os.popen 기능으로 변경 되었기 때문에이 이름을 선택했다고 가정합니다. 이 둘 사이의 마이그레이션을 자동화하는 방법조차있을 수 있습니다.

5

subprocess.Popenos.popenX POSIX 함수 (오랜 역사가 있음) 그룹을 대체합니다. 나는 이름이 Popen이라면 이전 함수에 익숙한 사람들이 새로운 함수를 찾아서 사용할 가능성이 높다고 생각합니다.

PEP for subprocess (PEP 324)에는 모듈 이름에 대해 약간의 논의가 있지만 클래스 Popen은 아닙니다. list of PEPs (파이썬 향상 제안서)은 일반적으로 파이썬의 기능에 대한 근거를 찾고자 할 때 아주 좋은 곳입니다.