Почему я должен использовать его вместо optparse? Это их новые функции, о которых я должен знать?
Я думаю, что ответ @ Николаса охватывает это хорошо, но не более мета-вопрос, с которого вы начинаете:
Почему был создан еще один модуль синтаксического анализа командной строки?
Это дилемма номер один, когда в стандартную библиотеку добавляется какой-либо полезный модуль: что вы делаете, когда появляется существенно лучший, но несовместимый с предыдущими версиями способ обеспечения такой же функциональности?
Либо вы придерживаетесь старого и общепризнанного способа (обычно, когда мы говорим о сложных пакетах: asyncore vs twisted, tkinter vs wx или Qt, ...), или вы в конечном итоге получаете несколько несовместимых способов сделать одно и то же (XML) парсеры, IMHO, являются еще лучшим примером этого, чем парсеры командной строки - но email
пакет против множества старых способов решения подобных проблем тоже не слишком далеко ;-).
В документах вы можете угрожающе ворчать о том, что старые способы «устарели», но (если вам необходимо поддерживать обратную совместимость) вы не сможете их убрать, не остановив крупные важные приложения от перехода на новые версии Python.
(Дилемма номер два, напрямую не связанная с вашим вопросом, резюмируется в старой поговорке «стандартная библиотека - это то место, куда умирают хорошие пакеты» ... с выпусками раз в полтора года или около того, пакеты не очень, очень стабильный, не нуждающийся в выпусках чаще, чем он, может существенно пострадать, будучи "замороженным" в стандартной библиотеке ... но это действительно другая проблема).