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...




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

Я думаю, что выход даже альфы-версии нового Python значимое событие. Это не означает, что теперь надо обязательно сообщать в новостях о всех промежуточных релизах.

anonymous_incognito ★★★★★
()

>деление целых теперь даёт вещественный результат; то, о чем так долго говорили большевики!

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

>>деление целых теперь даёт вещественный результат; то, о чем так долго говорили большевики!

самое дурацкое изменение, ИМХО. куча геморроя - и ради чего?

tailgunner ★★★★★
()

>через _мутабельный_ тип bytes

o_O Меня это слово не много в ступор вогнало... что оно означает-то?

kagor
()

>The print() function doesn’t support the “softspace” feature of the old print statement. For example, in Python 2.x, print "A\n", "B\n" would write "A\nB\n"; but in Python 3.0, print("A\n", "B\n") writes "A\n B\n".

Хм. А что это за софтспейс такой [был]?

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

>>через _мутабельный_ тип bytes

>o_O Меня это слово не много в ступор вогнало... что оно означает-то?

Я так понял это "перевод" слова mutable (изменяемый) или как?

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

Ура. Теперь ждем беты Ruby 2.0, и смотрим, как же оба сообщества решат вопрос с реализацией потоков (нативно, green threading, еще как-то -- у каждого подхода хватает своих минусов). Хотя было бы очень интересно увидеть-таки оживление разработки Perl 6, боюсь, в будущее мы пойдем все же под знаменами Python и Ruby.

anonymous
()

>исходники по дефолту в UTF-8, не-ASCII идентификаторы;

а там где-нибудь есть надпись большими буквами: НЕ ТРОГАТЬ ?

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

> самое дурацкое изменение, ИМХО. куча геморроя - и ради чего?

Лично я очень рад. Необходимость всё время конвертить к флоату сильно задалбывала.

Для целочисленного деления оставлен //.

yk4ever
() автор топика
Ответ на: комментарий от kagor

> Я так понял это "перевод" слова mutable (изменяемый) или как?

Бинго! Бери с полки пирожок.

Как-то у меня не вяжется с русскими переводами, до сих пор кортежи туплями зову.

yk4ever
() автор топика
Ответ на: комментарий от Davidov

> Хм. А что это за софтспейс такой [был]?

A space is written before each object is (converted and) written, unless the output system believes it is positioned at the beginning of a line. This is the case (1) when no characters have yet been written to standard output, (2) when the last character written to standard output is "\n", or (3) when the last write operation on standard output was not a print statement.

yk4ever
() автор топика

Аффтар технично намекнул, что он - быдлопитонокодер. Это я на "туманные перспективы" намекаю, если наш недалекий ньюсмейкеры сам не поймет. По делу - видимо, как Оффтоп2000 выпускали к 2000 году, так и Питон3000 собирались к 3000-ному. Однако, перенесли релиз годков на двести. Ура, товарищи! Ура!

anonymous
()

Неплохо. Ничего лишего имхо не придумали, всё по делу.

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

> Теперь ждем беты Ruby 2.0

Да хотя бы 1.9, куда YARV включат. Старый рантайм, говорят, вообще ни к чёрту в продакшене.

> как же оба сообщества решат вопрос с реализацией потоков (нативно, green threading, еще как-то

В Py3k менять ситуацию с тредами никто не собирается. Подробнее тут: http://www.artima.com/weblogs/viewpost.jsp?thread=211200

> Хотя было бы очень интересно увидеть-таки оживление разработки Perl 6

Да чего-то они там копошатся. Вот только неясно, много ли будет желающих его использовать, с такими изменениями.

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

> Аффтар технично намекнул, что он - быдлопитонокодер.

На питоне не бывает быдлокодеров. Удивительно, но факт.

> По делу - видимо, как Оффтоп2000 выпускали к 2000 году, так и Питон3000 собирались к 3000-ному. Однако, перенесли релиз годков на двести. Ура, товарищи! Ура!

Онанимус лает - змея ползёт. Кстати, название "Python 3000" было придумано именно как пародия на винду.

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

>На питоне не бывает быдлокодеров. Удивительно, но факт.

Да вы, батенька, оптимист. Даже нет. Вы, батенька, утопист. Либо просто неосведомленны о размахе быдлокодерства на Питоне.

>Онанимус лает - змея ползёт. Кстати, название "Python 3000" было придумано именно как пародия на винду.

Ржу нимагу. У быдлопитонодевелопмеров получилось пошутить. А следующий питончег будет ПитонХеХеПеПе. Тоже пародия на XP. А можно - ПитонАстаЛаВиста.

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

> В Py3k менять ситуацию с тредами никто не собирается.

Там нет, в Ruby собираются. Однако простота, с которой потоки живут в JRuby (они уже делают тред-сейф AST sharing), показала на проблемы green threading в MRI явно.

> Да хотя бы 1.9, куда YARV включат. Старый рантайм, говорят, вообще ни к чёрту в продакшене.

Да не, нормально. Идея ребят в том, чтобы быстро поднять приложение до 1.0 и потом уже исправлять боттлнеки кешированием, переписыванием проблемных мест на С расширения. Twitter же справились даже с их проблемным кешированием (очень много запросов = немного запросов на каждую * на очень большое число страниц).

1.9, кстати, нестабильная ветка, которая при релизе будет названа 2.0. Политика именования как у многих GNU проектов :)

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

> Ржу нимагу. У быдлопитонодевелопмеров получилось пошутить.

Так без проблем, не умри только со смеху :) Быдлокодеры есть везде, и от смены языка они редко умнеют :)

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

> Вот только неясно, много ли будет желающих его использовать, с такими изменениями.

Читал. Изменения отличные. Вот выпустили бы его хоть когда-нибудь.

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

>Быдлокодеры есть везде, и от смены языка они редко умнеют :)

А почему у питона - больше всего? Наверное, питон - быдлоязык :)))))

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

> А почему у питона - больше всего? Наверное, питон - быдлоязык :)))))

Да ты придурок, а не клон анонимуса. Бери свой Рубильник или ПыхПых и вали быдлокодить, урод! Куча толковых ребят бабло на Питоне зарабатывает.

Ты, идиот, даже не догадываешься где и как его используют. В пример, наши сетевые программы годами под нагрузкой и без перезагрузки работают. Находим периодически новых тольковых ребят, которые быстро изучают этот замечательный и практичный язык.

Умри, гнида! Тебе только в Винде на Канчел нажимать предначертано! Бот хренов!

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

> Да вы, батенька, оптимист. Даже нет. Вы, батенька, утопист. Либо просто неосведомленны о размахе быдлокодерства на Питоне.

Вы тролль. Взойдёт солнце и вы окаменеете. И тогда за вами приду я, с киркой и перфоратором.

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

>Умри, гнида! Тебе только в Винде на Канчел нажимать предначертано! Бот хренов!

Вот оно, истинное лицо ЛОРа, разговор интеллигентных инженеров о плюсах и минусах языка.

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

- все строки полностью уникодные, доступ к бинарным данным - через мутабельный тип bytes;

уникод и в старых версиях можно было использовать, bytes - ненужное.

- новый синтаксис форматирования строк, метод .format вместо оператора "%";

давно пора.

- деление целых теперь даёт вещественный результат;

ну и зря.

- оператор print заменён функцией print();

правильно. Еще бы pass на pass() заменили

- исходники по дефолту в UTF-8, не-ASCII идентификаторы;

никто не мешал и в старых версиях писать в UTF-8

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

> Да хотя бы 1.9, куда YARV включат.

в svn-е -- уже давно. собирается и работает.

> решат вопрос с реализацией потоков

так вроде бы в ruby -- pthreads.. ну и зеленых оставили, на всякий разный случай.

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

> никто не мешал и в старых версиях писать в UTF-8

просто теперь иероглифами можно будет писать не только комментарии

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

> уникод и в старых версиях можно было использовать, bytes - ненужное.

О нём там приходилось специально заботиться. В основном все тупо писали обычными строками, что приводило к эксепшнам и неправильному подсчёту длин utf-8. Теперь уникод будет получаться сам собой, легко и непринуждённо.

Хорошая проповедь тута: http://live.julik.nl/2005/12/composition-normalization-and-morons

> никто не мешал и в старых версиях писать в UTF-8

в хедерах приходилось это явно прописывать кажинный раз. ЧТо раздражало.

yk4ever
() автор топика

Неплохой язык, но скажите, там до сих пор, если сделать:

C.a = 1

где а - переменная не объявленная в классе, то она будет автоматически создана?

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

Не переменная, а атрибут. Да, конечно будет создан. А что?

yk4ever
() автор топика
Ответ на: комментарий от shumer

> Неплохой язык, но скажите, там до сих пор, если сделать:

Может и создана, может и нет, зависит от объявления класса. В общем случае - будет создана. Если у класса жесткое описание полей - будет эксепшн.

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

> Если у класса жесткое описание полей - будет эксепшн.

Не знал про это. Как задается жесткое/не жесткое?

На счет "Да, конечно будет создан. А что?". По-моему это очень не удобно, когда переменные создаются сами собой в любом месте кода. Это подходит для маленьких скриптов, но совершенно недопустимо для больших программ.

shumer
()
Ответ на: удаленный комментарий

>альфа Python

это какаято туманность? 0_o

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

> Не знал про это. Как задается жесткое/не жесткое?

Точно помню что надо явно наследовать object, и задать какое-то __ поле, глянь в мане...

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

> из ново-васика пытаются сделать real language

Просто для статистику - вы перлист, рубист, или явист?

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

> где а - переменная не объявленная в классе, то она будет автоматически создана?

В этом вся соль. ;)

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

>> из ново-васика пытаются сделать real language

>Просто для статистику - вы перлист, рубист, или явист?

Он лиспер, это же сразу видно :D

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

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

Как раз для некоторых больших программ это спасение. Допустим, мы хотим вынести часть логики программы во внешние скрипты, и пусть их авторы добавляют атрибуты по мере надобности. Или переводить XML в аналогичный по аттрибутам набор объектов. Дальше продолжать?

Про необходимость юнит тестинга даже для явы вы надеюсь слышали?

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

> __slots__ = ("fld1", "fld2")

ага, точно

>>> class A(object):
...   __slots__ = ("a","b")
...   a=1
...   b=2
...   c=3
...
>>> a = A()
>>> a.a
1
>>> a.c
3
>>> a.c=2
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
AttributeError: 'A' object attribute 'c' is read-only
>>> a.d=4
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
AttributeError: 'A' object has no attribute 'd'

Так что питон может быть гибкий как JavaScript и культурный как C++ ;)

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

> Как раз для некоторых больших программ это спасение.

Не-а

> Допустим, мы хотим вынести часть логики программы во внешние скрипты, и пусть их авторы добавляют атрибуты по мере надобности.

Ну не надо примеры притягивать за уши. В данном случае можно использовать ассоциативный массив.

> Про необходимость юнит тестинга даже для явы вы надеюсь слышали?

Юнит-тесты рулят, но юнит-тесты не могут отловить целый класс ошибок, которые элементарно отлавливаются, например, в статических языках.

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

> Допустим, мы хотим вынести часть логики программы во внешние скрипты, и пусть их авторы добавляют атрибуты по мере надобности. > Ну не надо примеры притягивать за уши.

Это мой use case Python'a. И не только мой.

> В данном случае можно использовать ассоциативный массив.

А смысл?

> Юнит-тесты рулят, но юнит-тесты не могут отловить целый класс ошибок, которые элементарно отлавливаются, например, в статических языках.

Правда? Именно *не* могут?

Ну если статические языки не вызывают гемороя и у тебя нет нужды в бешеном использовании ассоциативных массивов (те же рантайм-ошибки) - значит не используй Питон для этих задач? :)

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

> Пидон фтопку! .Net наше фсё!

Расскажи это MS, пуская отменят IronPython

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

> Это мой use case Python'a. И не только мой.

Да понятно... но для этого use-case нет необходимости в "автоматическом" добавлении атрибутов.

>> В данном случае можно использовать ассоциативный массив.

>А смысл?

Имеется в виду - если бы поведение со __slots__ было жестко встроено в язык, это не помешало бы "добавлению атрибутов по мере надобности", разбору XML и прочему.

>> Юнит-тесты рулят, но юнит-тесты не могут отловить целый класс ошибок, которые элементарно отлавливаются, например, в статических языках.

> Правда? Именно *не* могут?

Правда. Именно *не* могут. Не говоря уже о том, что unit-тесты редко дают 100%-coverage.

> Ну если статические языки не вызывают гемороя и у тебя нет нужды в бешеном использовании ассоциативных массивов (те же рантайм-ошибки) - значит не используй Питон для этих задач? :)

Я использую и то, и другое.

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

> Имеется в виду - если бы поведение со __slots__ было жестко встроено в язык, это не помешало бы "добавлению атрибутов по мере надобности", разбору XML и прочему.

Как-то с атрибутами при спользовании питона в качестве скриптового скучновато становится. Написанию разборщика XML-у не помешает, согласен. Однако слотс в настоящий момент неудобны для людей и выглядят по-моему костылем.

> Правда. Именно *не* могут.

Тут не понял :( Пойду почитаю.

> Не говоря уже о том, что unit-тесты редко дают 100%-coverage.

Есть проблема, но она к необязательному описанию полей она по-моему не относится напрямую :(

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