2009-12-07 6 views
0

Я только что узнал о существовании модуля optparse. Я лично всегда использовал getopt, поэтому мне не хотелось искать что-то лучше. Ясно, однако, что optparse намного более продвинут, поэтому я ожидаю, что это будет предпочтительным способом в будущем, чтобы получить опции из командной строки.«Лучшая опция» из библиотеки python, любой список?

В любом случае, это событие поразило меня. Теперь мне интересно, есть ли модули или функции, которые я использую с самого начала, которые имеют намного лучшие альтернативы в стандартной библиотеке. Есть ли такой компактный и быстрый список для просмотра, по вкусу «предыдущие решения: getopt. Лучшее решение: optparse (с python 2.x)»?

Редактировать обозначен как CW по договоренности.

  • разборе опции командной строки: Getopt, optparse, argparse управления
  • упаковки: Distutils, Setuptools

ответ

2

Я предлагаю это может быть хорошим местом, чтобы начать такой список

к сведению, что есть pep389 для замены optparse с argparse

collections.defaultdict работает лучше в большинстве мест, где вы бы использовали dict.setdefault

модуль коллекции является хорошим, чтобы ознакомиться с, как это имеет много новых вещей в Python3

Генератор выражений часто лучше, чем списковых, если вам не нужно, чтобы сохранить список

троичный оператор b if a else c вместо a and b or c со всеми его проблемами

multiprocessing заменяет любой другой способ, которым вы делали это;)

itertools.izip_longest избегает использования обходных решений, когда вы закладываете неровные вещи

+0

ОК, допустим, что я жду какое-то время, если кто-то выйдет с волшебным списком из его закладок. Если нет, я переработаю вопрос и сделаю это CW, чтобы мы могли написать один –

+0

Конечно. Я думаю, что CW - хорошая идея. Вы ищете материал, который является новым в Python2.6/7 или Python3? –

0

Я бы не совсем согласен с утверждением «optparse лучше, чем getopt». Если optparse вам лучше, это не значит, что кто-то не нашел бы getopt намного предпочтительнее. Они предназначены для разных целей: getopt намного проще и требует меньше понимания для начала использования (особенно, если вы знакомы с getopt из других источников: например, shell-скрипты), optparse является более мощным и более подробным. Однако, если мне нужно просто получить один или два параметра командной извести, я могу даже использовать простой оператор if.

Подводя итог, каждый инструмент имеет свою цель, и для любой ситуации может потребоваться другой инструмент, который более подходит для этой ситуации.

+0

в моем посте, лучше == имеет больше возможностей. –

+0

@ Сфефано Борини, я понял. Спасибо за объяснение. – artdanil

1

Не совсем компактный и ссылающийся только на стандартную библиотеку (и другие части стандартного Python), но не на сторонние пакеты, есть все эссе "What's New in Python X.X?".

Помимо этого, и Google, я не думаю, что есть такие списки, кроме случайных блогов и так далее.

+0

Основная проблема с google заключается в том, что вы должны знать о существовании чего-либо, прежде чем вы сможете его искать. Я бы никогда не искал альтернативы getopt, потому что предположил, что в стандартной библиотеке нет ничего другого, чтобы выполнить ту же задачу. –

+0

Я думаю, что это больше похоже на резюме устаревших идиом –

+0

@Stefano Borini: «вы должны осознавать существование чего-то прежде, чем сможете его найти». Это лучшее оправдание, которое я слышал в течение длительного времени. Я собираюсь использовать это, пока мои навыки не станут настолько устаревшими. Я больше не могу удерживать оплачиваемую работу в программном обеспечении. Поистине блестящий повод для того, чтобы не отставать от новостей, изменений в PEP, изменений в библиотеке и т. Д. –

0

Я использую Ричарда Грюта Python Quick Reference, который является отличной ссылкой на все вещи Python, включая некоторые из наиболее важных частей стандартной библиотеки. Он делает хорошую работу по внесению изменений в язык и библиотеку, использующую цветовое кодирование и примечания.

Посмотрите на his section on getopt, например, и list of modules and packages in base distribution.

Это еще не обновлено для Python 3, но я живу в надежде!