Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
Многих отталкивает в Python то, что блоки выделяются отступами (то есть выравнивания важны!), но это как раз не самое большое зло Python. Во-первых, это правило не такое строгое, как кажется на первый взгляд и из него есть много исключений, а во-вторых, это позволяет забыть про фигурные скобки и точки с запятой.
На мой взгляд, гораздо большим недостатком Python является отсутствие некоторых кратких операторов: упомянутых инкремента и декремента, тернарного оператора (cond?exp1:exp2), появившегося только в версии 2.5.
Но это компенсируется возможностью переопределить любой оператор и гибко настроить механизм преобразования типов, создавать итераторы, классы-помощники, использовать декораторы. Кроме того, в Python есть изюминки, которых нет в Perl. Например, множественные сравнения (1 < a < 2). Есть и своя скороговорка. Например, Perl-конструкция:
if (grep {$_ eq 'z'} @a) {
в Python реализуется на много элегантней:
if 'z' in a:
Библиотеки
Всем известен девиз Perl: «всегда есть не одно решение» («There is more than one way to do it»). Видимо этим (и давней историей) вызвано большое разнообразие библиотек, обладающих разными возможностями. В Python принцип противоположен: «Должен быть один, а лучше только один, очевидный путь решения» («There should be oneand preferably only oneobvious way to do it»). Поэтому функциональность библиотек не пересекается, но по возможностям Python не уступает Perl.
Для обработки запросов в Python имеется библиотека cgi (в mod_python её функциональность продулибрована в более производительной библиотеке util). Она изящно обрабатывает и POST-, и GET-запросы, принимает файлы, одним словом, делает всё необходимое.
Для работы с почтой есть прекрасные пакеты email, smtplib, mimetools, multifile, rfc822 (поддерживается не только RFC 822, но и более «продвинутый» формат RFC 2822).
Оба языка имеют собственные API для работы с базами данных: DBI в Perl и набор модулей в Python (например, MySQLdb), имеющих единый интерфейс DBAPI 2.0. В среде «гуру» есть мнение, что Python работает с базами данных быстрее, чем Perl, но мне не удалось выявить различия; видимо, и там, и там скорость лимитируется производительностью самой базы данных. Следует отметить, что в Python тип параметров, подставляемых в SQL-запрос, определяется жёстко, что позволяет избежать многих недоразумений. (В Perl/DBI тип также можно задать принудительно, но это намного более громоздко.)