LINUX.ORG.RU

Вышла альфа Python 3.0


0

0

В то время как PHP 6 и Perl 6 всё ещё маячат в туманных горизонтах, уже вышла первая альфа Python 3.0 (проект, ранее известный как Python3000).

Окончательный релиз планируется на август 2008 года; ожидается, что к этому времени будут портированы наиболее популярные библиотеки. Новая версия не содержит особо радикальных изменений (в основном косметические исправления старых недостатков), но нарушает обратную совместимость с версиями 2.x. Будут выпущены вспомогательные утилиты для облегчения миграции кода.

Поддержка и развитие ветки 2.x будет продолжены, по крайней мере до 2.7 (текущая стабильная версия - 2.5.1).

Основные значимые нововведения:
- все строки полностью уникодные, доступ к бинарным данным - через мутабельный тип bytes;
- новый синтаксис форматирования строк, метод .format вместо оператора "%";
- стандартные функции возвращают преимущественно итераторы, вместо списков;
- деление целых теперь даёт вещественный результат;
- оператор print заменён функцией print();
- исходники по дефолту в UTF-8, не-ASCII идентификаторы;
- доступ к не-глобальным переменным из вышележащего скопа;
- восьмеричные и двоичные литералы;
- более гибкая распаковка последовательностей.

Полный список можно засмотреть тут: http://docs.python.org/dev/3.0/whatsn...




>>> Подробности

Ответ на: комментарий от AlexM

> Ну, зато в этой паре раз без динамики было бы совсем неуютно.

Охотно верю. Я не против динамики, я против ее использования "где не надо" - а надо в относительно небольшом числе случаев...

> некоторые фреймворки используют динамику "под капотом"

...в частности, для _некоторых_ фреймворков, где динамика хорошо спрятана "под капотом" :)

tailgunner ★★★★★
()
Ответ на: комментарий от AlexM

>Чрезмерно упорядоченные фреймворки оказываются слишком нудными для применения, увы.

Согласен. Поэтому сам рекомендую части контроллера встраивать в вид :D

KRoN73 ★★★★★
()
Ответ на: комментарий от swizard

>map { print } map { "my name is ".$_->{name}....

Не то. Трудно между 2мя применениями вставить произвольный код. Да и не сильно короче.

DonkeyHot ★★★★★
()
Ответ на: комментарий от DonkeyHot

> Трудно между 2мя применениями вставить произвольный код.

Ну блин, мы программисты или кто? :)

@templates = map { "my name is ".$_->{name}....
print shift $templates;
# Something...
print shift $templates;

swizard
()
Ответ на: комментарий от swizard

>print shift $templates;

:) Это прокатило бы в ленивом Хаскеле -- но тут все строки вычисляются независимо от нужности, та же БД с именами/возрастами такому поведению не обрадуется.

Приведеные варианты не короче, и не красивее питонских, по крайней мере не "в полтора раза". Т.ч. можно считать мой тезиз правильным -- на отличных от тривиальных случаев питонский .format() не уступает перловому аналогу.

DonkeyHot ★★★★★
()
Ответ на: комментарий от DonkeyHot

> Это прокатило бы в ленивом Хаскеле

Заворачиваем в thunks =)

@f = map { my $u = $_; sub { "my name is ".$u->{name}.", my age is ".$u->{age} } } ( $user1, $user2 );
print $f[0]->();
# Do something
print $f[1]->();

> питонский .format() не уступает перловому аналогу.

Достаю козырь -- в перле есть функция sprintf =)

swizard
()
Ответ на: комментарий от swizard

> Что тебя смущает, отче? map? Переменные по-умолчанию? =)

Всё вместе, сыне! 8)

tailgunner ★★★★★
()
Ответ на: комментарий от DonkeyHot

> len('sprintf') == len('.format'), зато теперь нам уже нужно считать "%"ты :)

Считать символы -- это сразу проигрыш питона, т.к. в перле есть достаточно неплохая макросистема: perldoc Filter::Simple ;)

swizard
()
Ответ на: комментарий от swizard

>Считать символы -- это сразу проигрыш питона

...в некоторых случаях... Если умножить на вероятность появления таковых (случаев) в *реальных* задачах, выигрыш может оказаться не столь заметен, если вообще окажется. Не говоря уже об задачах, специально заточеных под питон :)

DonkeyHot ★★★★★
()

а вот dict.has_key зря убрали, конечно можно if key in dict:, но мне кажется это не очень очевидно в случае когда инстанс именно dict.

anonymous
()
Ответ на: комментарий от DonkeyHot

> в *реальных* задачах

Ну давай дальше бицца python vs perl на *реальных* задачах -- занятие увлекательное и познавательное =)

swizard
()
Ответ на: комментарий от swizard

>Ну давай дальше бицца python vs perl на *реальных* задачах

Зачем? Я уже анализировал и результаты изложил. Можете поверить. Или можете не поверить и (либо проверять либо нет). Мне не интересно - я уже знаю "истину", и пока опровергающих фактов не было.

DonkeyHot ★★★★★
()
Ответ на: комментарий от swizard

> Достаю козырь -- в перле есть функция sprintf =) Это даже не аналог, косоватая она, нет гибкости шаблона, если строчку форматирования задавать в конфиге (что часто делается), то поменять в ней порядок вывода значений без перепахивания кода почти нереально.

anonymous
()
Ответ на: комментарий от DonkeyHot

> Зачем? Я уже анализировал и результаты изложил.

Жаль, ну как знаешь :) Вообще понимаю -- нету времени, нужно работать, долго программировать на питоне *реальные* системы ;) А у меня с перлом еще и некоторое свободное время есть =)

swizard
()
Ответ на: комментарий от swizard

>Вообще понимаю -- нету времени, нужно работать, долго программировать на питоне *реальные* системы ;)

Не понимаешь:) Мне не нужно _изучать_ перл, я уже лет 5 _забываю_ его :)

DonkeyHot ★★★★★
()
Ответ на: комментарий от DonkeyHot

> Не понимаешь:) Мне не нужно _изучать_ перл, я уже лет 5 _забываю_ его :)

Не зарекайся =)) Я сам два года работал j2ee-программером, теперь, видишь, на перл вернулся ;)

Хотя, надеюсь, ненадолго, сейчас активно экспериментирую с проектом на scheme + си. Если оправдает ожидания, должен получиться неплохой стартап =)

swizard
()

кто это чудо испытывал?

Стал переносить на него проект, столкнулся с кучей проблем. Но вот одно выяснил: оператор форматирования % пока работает :)

anonymous
()
Ответ на: комментарий от swizard

>Я сам два года работал j2ee-программером, теперь, видишь, на перл вернулся

Ну ты и сравнил :)

DonkeyHot ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.