optparse가 아닌 argparse를 사용하는 이유는 무엇입니까?
Python 2.7 문서에는 또 다른 명령줄 해석 모듈이 포함되어 있습니다.에 더하여getopt
그리고.optparse
우리는 지금argparse
.
다른 명령줄 해석 모듈이 생성된 이유는 무엇입니까?왜 제가 대신 사용해야 하죠?optparse
알아야 할 새로운 기능이 있습니까?
python 기준2.7
는 더 이상 사용되지 않으며 향후 사라질 것으로 예상됩니다.
argparse
는 원래 페이지에 기재되어 있는 모든 이유로 권장됩니다(https://code.google.com/archive/p/argparse/):
- 위치 인수 처리
- 지원 서브프로세서
- 다음과 같은 대체 옵션 접두사 허용
+
그리고./
- 제로 이상 및 하나 이상의 스타일 인수 처리
- 보다 유용한 사용 메시지 생성
- 커스텀 타입과 액션을 위한 보다 심플한 인터페이스 제공
자세한 내용은 PEP 389에도 나와 있습니다. PEP 389는 PEP 389를 통해argparse
스탠다드 도서관에 들어갔어요
옵트파스 대신 사용해야 하는 이유는 무엇입니까?새로운 기능은 제가 알아야 하는 건가요?
@Nicholas의 답변은 이것을 잘 커버하고 있다고 생각합니다만, 「메타」라고 하는 질문으로 시작하는 것은 아닙니다.
다른 명령줄 해석 모듈이 생성된 이유는 무엇입니까?
이것이 바로 유용한 모듈을 표준 라이브러리에 추가할 때 가장 큰 딜레마입니다.동일한 기능을 제공하는 훨씬 우수하지만 역호환성이 없는 방법이 등장했을 때 어떻게 해야 할까요?
오래된 방식(일반적으로 복잡한 패키지: asyncore vs twisted, tkinter vs wx 또는 Qt 등)을 고수하거나 동일한 작업을 수행하는 여러 호환되지 않는 방법(XML 파서, IMHO는 명령줄 파서보다 훨씬 더 좋은 예입니다.email
패키지와 유사한 문제를 해결하는 수많은 오래된 방법도 멀지 않았습니다.
오래된 방식이 "비권장"되는 것에 대해 문서에서 위협적인 불평을 할 수도 있지만, (역호환성을 유지할 필요가 있는 한) 크고 중요한 애플리케이션이 새로운 Python 릴리스로 이동하는 것을 막지 않고서는 실제로 그것들을 없앨 수 없습니다.
(질문과 직접 관련이 없는 Dilemma 2번은 "표준 라이브러리는 좋은 패키지가 폐기되는 곳"이라는 옛말에 요약되어 있습니다.매년 반 정도 출시됩니다만, 그다지 안정적이지 않고 릴리스가 필요 없는 패키지는, 표준 L에 「동결」되어 버리기 때문에, 실제로는 큰 문제가 될 수 있습니다.아이브러리...하지만 그건 정말 다른 문제입니다.)
Python 추가에 대한 가장 좋은 근거는 PEP: PEP 389: argparse - New Command Line Parsing Module, 특히 "Why is not getopt and opt parse?" 섹션입니다.
이 블록에 새로운 아이들도 있어요!
- 이미 언급되었던 옵트파스 말고도.[사용 안 함]
- 아르파르세 또한 언급되었는데, 이것은 외부 리브를 포함하기를 꺼리는 사람들을 위한 해결책이다.
- docopt는 참조할 가치가 있는 외부 lib로 문서 문자열을 입력 파서로 사용합니다.
- click은 외부 lib이기도 하며 인수를 정의하기 위해 데코레이터를 사용합니다.(소식통은 다음과 같이 권장합니다.클릭 이유)
- python-inquirer 선택에 중점을 둔 도구에 Inquirer.js(repo)를 기반으로 합니다.
자세한 비교가 필요한 경우는, 이것을 읽어 주세요.docopt 또는 click을 사용할 수 있습니다.카일 퍼든 덕분이야!
처음에는 @fmark처럼 optparse에서 argparse로 전환하는 것을 꺼렸습니다.그 이유는 다음과 같습니다.
- 나는 그 차이가 그렇게 크지 않다고 생각했다.
- 일부 VPS는 여전히 Python 2.6을 기본적으로 제공합니다.
그리고 다음 문서를 보니 argparse는 optparse보다 성능이 뛰어납니다.특히 의미 있는 도움말메시지 생성에 대해 이야기할 때는 http://argparse.googlecode.com/svn/trunk/doc/argparse-vs-optparse.html 입니다.
그리고 @Nicholas의 "argparse vs. optparse"를 보고 python <2.7로 argparse를 사용할 수 있다고 말했습니다(예, 이전에는 몰랐습니다).
이제 나의 두 가지 걱정은 잘 해결되었다.저도 비슷한 마음가짐을 가지고 있는 다른 사람들에게 도움이 될 수 있기를 바라며 이 글을 썼습니다.
언급URL : https://stackoverflow.com/questions/3217673/why-use-argparse-rather-than-optparse
'source' 카테고리의 다른 글
MySQL UPDATE(랜덤 번호 1-3) (0) | 2022.09.12 |
---|---|
Twig에서 클래스 상수에 액세스하는 방법 (0) | 2022.09.12 |
nuxtjs의 미들웨어 이름 지정 getter 기능에 액세스합니다. (0) | 2022.09.12 |
Python에서 상호 또는 순환(순환) 가져오기를 사용하면 어떻게 됩니까? (0) | 2022.09.12 |
컬렉션의 이유정렬은 빠른 정렬 대신 병합 정렬을 사용합니까? (0) | 2022.09.12 |