вторник, 24 июля 2012 г.

argparse, format и six или мои маленькие радости

Скажем прямо, optparse был хорошим решением для Python 2.3, когда в нем была только обертка над getopt. Но время шло и народ требовал нового решения, составлял PEP'ы и наконец принимал argparse в состав Python 2.7+. Однако на argparse я пересаживался долго. Вот прошло уже больше года с моего окончательного перехода на 2.7 ветку, а я все пытался парсить опции и аргументы, приходящие в Python-скрипт, при помощи optparse. Последние пару недель меня убедили что очень зря! С argparse я теперь могу разбирать не только опции, но и аргументы. Никакого больше,

parser = OptionParser(...)
...
options, args = parser.parse_args()

только,

parser = ArgumentParser(...)
...
args = parser.parse_args()

только так! В целом преимущества нового подхода над старым расписаны в документации и в паре других статей. Так что не буду повторятся, просто посоветую и вам использовать argparse и забить на optparse as soon as possible.


Примерно похожая на ситуацию с optparse, у меня была ситуация с форматированием строк. Я продолжал грызть кактус использовать синтаксис 'Hello, %s!' % 'world' вместо модного и молодежного 'Hello, {0}!'.format('world'). И опять же пару последних недель расставили все по местам. После окончательного ознакомления со всеми возможностями Format String Syntax, я просто понял, что назад дороги нет! Только format, только так!

И да, ведь встроенная функция format может использоваться не только для форматирования строк, но и для любых других объектов, которые поддерживают метод __format__. Например, сейчас нет необходимости пользоваться strftime для объектов из библиотеки datetime, просто пишем,

format(datetime.date.today(), '%Y-%m-%d')

или даже,

'{:%Y-%m-%d}'.format(datetime.date.today())

и вуаля!


А напоследок скажу, что также в последнее время часто задумываюсь о необходимости изучения Python 3 или хотя бы портирования какого-то своего кода на эту ветку. И как по магии, в своем фиде на GitHub нашел полезную библиотеку six, которая весьма мне пригодится в этом деле. Вот такие вот дела!

blog comments powered by Disqus