LINUX.ORG.RU

Python 2.7

 ,


0

0

3 июля 2010 вышло обновление Python 2.x, в котором были добавлены возможности, ранее присутствовавшие только в ветке 3.x, а также другие улучшения:

  • Новый тип — упорядоченный словарь
  • unittest обзавелся новыми методами assert и может пропускать (по требованию, естественно) тесты
  • значительно ускорена работа модуля IO
  • автоматическая нумерация полей в методе str.format()
  • Улучшения представления repr для типа float, как в Python 3
  • Поддержка Tile для TkInter
  • Объект memoryview портирован обратно из Python 3
  • литералы для множеств ({a, b, c})
  • comprehensions для множеств и словарей
  • Dictionary views — способ представления фрагмента словаря без копирования
  • Новый синтаксис для вложенных операторов with
  • Новый модуль sysconfig

>>> Анонс релиза на оф. сайте и загрузка

★★★★★

Проверено: Shaman007 ()
Последнее исправление: mono (всего исправлений: 4)

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

>Только почему ты решил, что при этом выбросят и 2.x?

А я не решил. И перл-5 тоже жив как бы. Я им даже иногда пользуюсь, пускаю скупую слезу, вспоминаю «бутылку кефира пол-батона».

Уже сейчас там началась интеграция с unladen swallow, ты в курсе?

По-моему, ты врешь)

Если им удастся ускорить Питон на порядок,

Гагагааа, я кажется узнаю тебя, аноним.

Так что Питон всяко перспективней каличного Руби с неисправимыми ошибками в ДНК.

Если найдешься привести ошибки в ДНК, дам сахарок. Ванильный!

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

>дайте ссылку

Поздняк, он(Zed Shaw) ее удалил. Правда в кеше гугля наверное есть. Вкратце, там про жертву хайпа, в юморной, эмоциональной, типичной для Зеда, луговски-стайл манере.

Сейчас Зед в питоновском сообществе в основном, какие-то проекты опять пилит, и ругает его то же ( желчь по поводу 'dive in python' клевая ).

Короче, я к чему, там ничего интересного для технаря, просто эссе.

Почитать Зеда можно много где, например http://sheddingbikes.com/ здесь, ну или http://learnpythonthehardway.org здесь )

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

> Вон, спросил AVL2, какие популярные программы общего применения — а не узко-специализированные корпоративные — написаны на хаскеле

darcs и xmonad с натяжкой можно назвать программами общего применения. Обе - уровня студенческих поделок. Хаскель - это знаете такой специфический язык (как и почти все функциональные). На нём программируют в основном (но не всегда!) ради самого процесса. Достаточно взглянуть на хаскельные библиотеки - сплошные языковые абстракции, обслуживающие сам язык. Когда требуется написать что то реально полезное, начинаются проблемы. Ибо это почти всегда требует взаимодействия с внешним нефункциональным окружением, сохранения состояния и прочих неприятных для функциональщиков вещей. И ещё один момент, чтобы писать на хаскеле эффективный код, нужна хорошая базовая подготовка. Люди, которые умеют применять хаскель правильно и по делу, очень дороги (и их очень мало). Естественно, ждать ширпотреба от фанбоев вроде AVL2 не приходится. Если они что и пишут для публичного использования, то выходит какашка вроде darcs.

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

> Наоборот, выход 2.7 подтверждает, что эта ветка очень даже жива.

2.7 выпущена только для упрощения перехода на новые фичи py3. Это только школьники свои хеллоуворды сразу переписывают. Серьезным крупным проектам изменение работающего кода просто из-за выхода новой версии нафиг не нужно. Ынтерпрайз очень инерционен - еще не все с py2.4 слезли.

Скорее всего постепенно бэкпортируют все ключевые фичи из py3k, а сам py3k станет ареной для экспериментов.

Этого не будет. А 2.7 должен стать последним релизом в ветке 2. py3k, кстати, заморожен для экспериментов.

Если им удастся ускорить Питон на порядок, крупные проекты ломанут портироваться, вот увидишь

unladen swallow это чистейший фейл. Ускорение только в 1.5 раза, GIL остался, зато медленно запускается и жрет еще больше памяти.

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

во-первых не 4*n, а n.

во-вторых, меня экономия 2х нажатий на клавиши на сотню не заботит.

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

> По-моему, Uladden Swallow того, окочурился

unladden swallow завершен и интегрируется в питон 3к в бранче py3k-jit.

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

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

Доктор, что со мной?

Взрослеешь. Лет через пять тебе вообще будет пофиг на чём писать, если конечно не впадешь в детство аки AVL2.

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

а где об этом можно почитать? особенно интересно что сказал гвидо с его постоянным желанием повыкидывать ненужное.

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

Что проще - нажать один раз } или отстучать 4*n раз по бэкспэйсу ?


«}» не один, а n*1 раз, очевидно? а если ещё не запрещать себе Tab - то вообще так и так n.

и 1/2 больше не равно 0 - пофиксили, наконец.

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

> На питоне тоже можно писать в одну строку и криво, это уже не раз обсуждалось. [code=python] for ii in range(10) { print(ii); print(«which is %s» % (['even','odd'][ii % 2])); } [/code]

тут хотя-б всё ясно, в отличае от того что можно нагородить на перле...

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

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

anonymous
()

Автора за новость на кол.

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

> о-моему, Uladden Swallow того, окочурился

Нет. Наоборот, его планируется интегрировать в основную кодовую базу CPython.

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

> особенно интересно что сказал гвидо с его постоянным желанием повыкидывать ненужное.

PEP 3146 (Standards Track)

Выступления на PyCon2010:

один из авторов «ласточки»

сам Гвидо (по ходу произнес пару фраз про unladden swallow)

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

>Лет через пять тебе вообще будет пофиг на чём писать

Мне и сейчас пофиг - лишь бы платили :)

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

> тут хотя-б всё ясно, в отличае от того что можно нагородить на перле...

В винде хотя-б всё ясно, в отличае от того что можно нагородить на линаксе

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

Я знаю ). Это был не то чтоб троллмнг... просто проверка на адекватность.

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

>PEP 3146 (Standards Track)

хммм, а раньше он, вроде бы, был rejected.

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

> Очень хорошо и доходчиво об этом написал автор Mongrel в небезызвестной статейке.

дайте ссылку

google «ruby is a ghetto»

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

>ответ - перл и bash.

Ну от дистра тоже зависит. Дебианщики любят Перл, многие дистрибутивы - Питон, некий нелюбимый местной публикой дистр на А использует Руби. А вообще причины преобладания того или иного языка в той или иной области скорее исторические. В биоинформатике допустим очень активно используется Перл, Питон зело любят гейм-девелоперы

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

>некий нелюбимый местной публикой дистр на А использует Руби.

Впервые слышу. А можно поподробнее?

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

> Читать о лямбда-функциях, о замыканиях.

Это ты прочитай, и потом скажи в каком месте блок - это функция? Это вроде как функция, но на самом деле нифига не функция, её нужно явно конвертировать в Proc, который тоже ни разу не функция, а callable object с уродливым интерфейсом.

Что извратного в прекрасном и простом ( в отличие от питонового ) yield, block_given? и call? При чем тут логические операторы вообще не ясно.

Это не логические операторы, |...| - это перегруженные символы для указания списка аргументов блока (почему не скобки, чёрт подери?), а & - перегруженный символ для трансформации блока в обычный аргумент. Вообще, ужас, даже любители руби не могу распарсить код на руби в зависимости от контекста. «Простой» yield - типичный abuse термина, на самом деле это всего лишь магический вызов блока (недофункции). У питоновского yield абсолютно иная семантика. block_given - это красиво. Ну-ну. Вместо простой логичской проверки аргумента ввели дополнительную сущность. Как это похоже на perl-way.

Если есть нормальные лямбды, всякое неудобство пропадает.

Нужны и нормальные лямбды, и нормальные функции как first class citizens. Питон сосёт в одном аспекте, Руби в другом. Ты просто не понял, что я в данном случае не сравниваю Руби с Питоном. У последнего есть свои недостатки (хотя их поменьше).

В руби принято require 'library/functionality'. Что еще?

Это примитив на уровне сишного #include. Если бы рубиновые либы ничего не делали, кроме определения классов, было бы ещё не так страшно. Но они иногда такое вытворяют... Потом сиди разгребай говнокод всяких фриков, дорвавшихся до eval'а и открытых классов.

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

> Мои «портянки» хотя бы грамотно написаны и нормально переведены. Была бы моя воля, я бы и за всякие «бэкпорты», «релизы» и прочий жаргон в текстах новостей по рукам стучал. Как будто сложно подобрать нормальный синоним на русском.

Впервые согласен с мужиком.

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

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

Эта фраза с головой выдаёт бывшего перловика. Если всё использовать правильно, будет зашибись. Ага, щаз. Каждый так и норовит написать по-быстрому в одну строчку. Из-за этого Перл и приобрёл славу write-only, а Руби недалеко от нёго ушёл.

Это не спец-синтаксис, это рекомендации по наименованию.

Самому не смешно, рекомендации... Эти рекомендации всю стандартную библиотеку испохабили. Потом хочешь не хочешь будешь и сам так писать, чтобы не выбиваться из стиля. То же самое с дебильным соглашением о 2-х пробелах на уровень.

Честно говоря, мне мудохаться с хэшами было удобнее

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

Наоборот, на вполне высоком уровне.

Да уж, подход «импортируем всё или ничего» - это чудесный вариант модульности. Особенно классно, когда миксины абьюзят, чтобы сэмулировать процедурный интерфейс. Ещё лучше, когда два подключаемых модуля перекрывают друг другу имена. Рад за тебя, что тебе эти извраты нравятся.

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

Ну по крайней мере Один Одмин Рассказывал

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

> конечно, там же никто пистониста не обидит

Познавшие дао не обижаются на простых смертных.

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

> def blahblah(blah, &closure)

Теперь объясни, почему у тебя только один параметр closure с закорючкой? Чем он собственно, лучше других. Ах да, это же чтобы блок отловить. Потому что блок - это хз что, совершенно левая сущность. Везде (в современных языках) есть анонимные функции (даже в Питоне, пусть и убогие), и только в Руби вокруг них такие пляски (напомнить ещё про пачку разных способов определить Proc?).

Классы и модули что ли уже отменили?

Ещё один. Читай выше объяснения.

но отсутствие first class functions - это драматически неудобно

Не нужно. Fixed.

Старая мантра всех фанбоев.

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

> По-моему, ты врешь)

По-моему, ты совсем окуклился там в своё рубиновом мирке. Очки протри.

Если найдешься привести ошибки в ДНК

TMTOWTDI - опасное наследственное заболевание, ничего уже не поправить.

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

>Это вроде как функция, но на самом деле нифига не функция, её нужно явно конвертировать в Proc, который тоже ни разу не функция, а callable object с уродливым интерфейсом.

Тут уже пошли детали реализации, а раньше говорил только о языке.. А зачем тебе конвертировать блок в Proc? Про уродливый интерфейс тоже интересно.

Это не логические операторы, |...| - это перегруженные символы для указания списка аргументов блока (почему не скобки, чёрт подери?)

Специально для тебя сделали ->(a,b){ a + b }, ну ~ как в сишарпике. Нравится?

а & - перегруженный символ для трансформации блока в обычный аргумент.

Можно обойтись и без неявных блоков, если не нравится - никто ведь не заставляет.

def do_twice(function); function.call; function.call; end

do_twice lambda { puts 'hello!' }

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

А ты контекст не показал. И вообще, где примеры?

«Простой» yield - типичный abuse термина, на самом деле это всего лишь магический вызов блока (недофункции).

Он не магический, он неявный. Тебе это наверное кажется чудесами? Просто хорошая и удобная штука, быстро привыкаешь.

У питоновского yield абсолютно иная семантика

Они его потом немного доделали. «Note: the syntactic extensions to yield make its use very similar to that in Ruby. This is intentional.» (c) http://www.python.org/dev/peps/pep-0342/

Хотя конечно, используется он по-другому, но унутре очень похож.

block_given - это красиво. Ну-ну. Вместо простой логичской проверки аргумента ввели дополнительную сущность.

Я говорил про красивый yield, а block_given? - это не красиво, это просто само собой разумеется. Это и есть простая логическая проверка аргумента, просто как уже говорилось, аргумент этот - неявный. Про дополнительные сущности вообще лучше не заикайся, это в питоне вводят новую херню на каждый чих ( генераторы, декораторы, comprehensions, with, etc etc ), вместо того, чтобы доделать нормальные анонимные функции, которые есть в перле, js, руби, и вообще везде.

Нужны и нормальные лямбды, и нормальные функции как first class citizens.

Я просил привести пример. Хоть один. В перле и js я использовал первородные функции вовсю, в руби я использую лямбды вовсю, никаких неудобств. Мне кажется, ты просто придираешься.

Это примитив на уровне сишного #include.

Я же ясно спросил что еще нужно.

Но они иногда такое вытворяют...Потом сиди разгребай говнокод всяких фриков, дорвавшихся до eval'а и открытых классов.

Дык давай ссылки-то на зло-код, вместе настучим по рукам ( если переоткрытие классов - не одна из первейших задач библиотеки конечно, там-то ССЗБ ).

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

>Теперь объясни, почему у тебя только один параметр closure с закорючкой?

Зачем тебе 10? Блок может быть один, потому параметр такой один.

Какой прок от анонимных функций в данном случае? Или ты как вендузятники, которым аналоги не подходят, подавай мс офис и фотошоп?

Читай выше объяснения.


Ссылку давай.

Старая мантра всех фанбоев.


Ну так объясни, что же мы такого теряем?

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

>далёкие от производства

Это то производство, где рядами обезьянки на жердочках, набивающие код?

Да, мне нафиг такое не впало.

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

>Ага, щаз. Каждый так и норовит написать по-быстрому в одну строчку.

Разве что в REPL. А так - нет, не норовит. Ну разве с питона переходит, где это нельзя, но быстро излечивается.

Эти рекомендации всю стандартную библиотеку испохабили.

Улучшили.

Потом хочешь не хочешь будешь и сам так писать, чтобы не выбиваться из стиля.

Тебе не хватает укола живительной Схемы. Дело не в стиле, так просто максимально ясно.

Ну я рад за тебя, что тебе нравится руками делать то, что может сделать транслятор.

Мне нравится, когда не приходится плодить сущностей без надобности.

Да уж, подход «импортируем всё или ничего» - это чудесный вариант модульности.

Ты прав, действительно, чудесный. Приводит к отличной декомпозиции. А можно вообще как в Хаскелл, один файл - один модуль. Но это не всегда удобно.

Ещё лучше, когда два подключаемых модуля перекрывают друг другу имена.

Ужас-ужас. Ты еще про бич всех быдлокодеров - ромбовидное наследование - запой.

Рад за тебя, что тебе эти извраты нравятся.

Наиболее логичное поведение среди всех популярных «скриптовых» языков. А все почему? Потому что принцип наименьшего удивления как веха.

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

>Везде (в современных языках) есть анонимные функции (даже в Питоне, пусть и убогие)

Ты врешь, в питоне нет анонимных функций. А в руби есть - lambda.

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

>В области замены баша Руби примерно эквивалентен Перлу но с ООП

баш удобен однострочными командами. Перл их легко допускает чего никак не скажешь про питон.

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

>По-моему, ты совсем окуклился там в своё рубиновом мирке.

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

Очки протри.

Действительно, выше уже дали ссылки. Ну что ж, Гвидо стареет)

TMTOWTDI - опасное наследственное заболевание, ничего уже не поправить.

Выросшие в клетке боятся свободы, какой сюрприз)

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

> А зачем тебе конвертировать блок в Proc?

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

Специально для тебя сделали ->(a,b){ a + b }, ну ~ как в сишарпике. Нравится?

Уже лучше. Это 1.9, так? Вот видишь, core-разработчики понимают проблему, а фанбои упорно твердят «не нада».

Он не магический, он неявный. Тебе это наверное кажется чудесами?

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

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

> Зачем тебе 10? Блок может быть один, потому параметр такой один. Какой прок от анонимных функций в данном случае?

Охотно верю, что тебе, вот лично тебе, никогда не приходилось передавать в функцию больше одного колбека. Также верю, что любителям TMTOWTDI и исключительных правил на каждый чих кажется бессмысленным унифицированный интерфейс анонимной функции.

Ну так объясни, что же мы такого теряем?

Удобство функциональной декомпозиции вы теряете, и даже этого не замечаете. Отвыкли думать в терминах функций. Всё у вас сообщения да блоки (иногда кто то шибко умный ещё скажет замыкание). Элитарная секта же с особой терминологией.

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

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

Вот Proc и передавай. Просто, правда? Так кстати в либах и делается. Случаи, когда блок конвертируется в Proc с помощью &blk параметра - в основном когда нужен *и* блок, *и* колбек. Хотя бывает люди просто используют & по привычке. Явной же нужды такой конвертации практически не бывает, твой пример с колбеком неудался.

Вот видишь, core-разработчики понимают проблему, а фанбои упорно твердят «не нада».

Я не говорил «не нада», просто мне хватает обычного синтаксиса, я же не плохой пхп-кодер, которому синтаксис мешает. Да и к тому же «alias :λ :lambda» давно уже сделал себе.

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

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

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

>Охотно верю, что тебе, вот лично тебе, никогда не приходилось передавать в функцию больше одного колбека. Также верю, что любителям TMTOWTDI и исключительных правил на каждый чих кажется бессмысленным унифицированный интерфейс анонимной функции.

Нет ты ответь.

Удобство функциональной декомпозиции вы теряете, и даже этого не замечаете. Отвыкли думать в терминах функций. Всё у вас сообщения да блоки (иногда кто то шибко умный ещё скажет замыкание). Элитарная секта же с особой терминологией.


Т.е. мы ничего не теряем, а у кого-то butthurt из-за его любимых функций. ЧИТД.

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

> Питон как замена башу неудобен

Разве что тебе лично.

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

>> Ага, щаз. Каждый так и норовит написать по-быстрому в одну строчку.

Разве что в REPL. А так - нет, не норовит

Ещё один одиночка мастер кунфу. В исходники популярных проектов (да хоть стандартной библиотеки) загляни, что ли. Я уж молчу про рядовых быдлокодеров.

Потому что принцип наименьшего удивления как веха

Да уж, чтение рубиновых исходников заставляет задуматься, а не был ли Руби просто циничной издёвкой Матца. Хотя может он действительно болен (сектант же).

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

>Удобство функциональной декомпозиции вы теряете, и даже этого не замечаете. Отвыкли думать в терминах функций. Всё у вас сообщения да блоки (иногда кто то шибко умный ещё скажет замыкание).

Все-то мы сохраняем, просто ты не понимаешь, что такое функция, да и угребищность питоньего ООП мозг скушала.

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

http://docs.python.org/reference/expressions.html#lambda

убогое конечно но это от помешательства на отступах :)

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

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