LINUX.ORG.RU

Знакомство с Python 3: Часть 1. Что нового в новой версии

 


0

0

В этой статье — первой из серии статей о Python 3— освещаются следующие темы: новая функция print(), функция input(), изменения в работе с вводом/выводом (I/O), новый тип данных bytes, изменения в строках и их форматировании, и наконец, изменения во встроенном типе данных dict. Эта статья адресована программистам, уже знакомым с Python, которые хотели бы узнать об изменениях в новой версии, но не желают разбираться в длинном списке Предложений по Улучшению Python.

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

★★★

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

Python модернизируется и становится все более похожим на Basic, что не может не радовать.

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

что-то не порадовали новые форматные строки. а-ля C# какой-то, нет?

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

> новый принт - это безусловно регресс

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

const86 ★★★★★
()

>> Также теперь в строках допускаются не ASCII-идентификаторы

офигительно

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

> Python модернизируется и становится все более похожим на Basic

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

const86 ★★★★★
()

> Некоторые разработчики могут не пожелать проводить миграцию своих проектов

а придецца

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

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

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

Я бы советовал приберечь сахарок для более интересных экземпляров.

Zenom ★★★
()

По-моему, все, кому это нужно, уже давно прочитали, что же там нового. Но статья неплохая. Жду вторую часть про abc, а то я так и не понял, зачем оно надо.

Laz ★★★★★
()

Хм. Очень интересный пример в статье:

>>>d = {1:"dead", 2:"parrot"}

>>>for values in d.items():
...     print(values) 
...
dead
parrot

Можно было б даже так:

>>>for values in sorted(d.items(), reverse=True):
...     print(values)

^_^

baverman ★★★
()

я вот села изучать второго питона. бросить и перекинуться на третий? или третий еще не нужен так сильно как второй?

OperaSoftware
()

кто это там переводил?

настоящее деление. жуть. real всегда переовдилось как вещественное в данном контексте.

vasaka ★★★
()

которые Ъ, дайте по ссылке пройти, а то я уже в очереди замучался стоять! :-p

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

С 3.Х пока проблемы - большинство библиотек не портированы и когда портируют сказать сложно. Если изучать, то имеет смысл 2-ю ветку - на третью перейдешь потом. Тем более, что 2.6 очень совместим с 3-кой, а скоро выйдет и 2.7

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

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

val-amart ★★★★★
()
Ответ на: комментарий от OperaSoftware

Для начинающих разницы почти никакой. Лучше учить на 2.6, он сразу пишет, что и где устарело.

mamay_cozak
()

Особо ничего страшного для 2.х не видно, изменения есть, но не критичные.

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

ты статью читал, или только примеры смотрел?

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

> На какой из многочисленных Basic'ов?

* Деление с плавающей точкой - на любой начиная с начала 80-х

* Кейворды для True и False - на любой VB

* Метод для print вместо кейворда - на VB (а требование скобок - на VB.NET)

и т.д.

Python повторяет тот же путь, который прошел Basic, но с запозданием.

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

> кто это там переводил?

> настоящее деление. жуть. real всегда переовдилось как вещественное в данном контексте.

нмда - перевод - это что то с чем то ;)

real_maverick ★★★
()

лучше бы статью про аннототаторы написали

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

> Python повторяет тот же путь, который прошел Basic, но с запозданием.

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

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

>> На какой из многочисленных Basic'ов?

>* Деление с плавающей точкой - на любой начиная с начала 80-х

Запишем: поциент думает, что раздельные операторы для целого и плавающего деления есть только в Басике.

>* Кейворды для True и False - на любой VB

поциент так же думает, что ключевые слова True и False изобретены в Басике

>* Метод для print вместо кейворда - на VB

поциент вдобавок считает питоновский print методом.

> (а требование скобок - на VB.NET)

поциент откровенно бредит.

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

tailgunner ★★★★★
()

Тон статьи явно доставляющий.

"Так как print теперь является функцией, вам нужно будет привыкать писать print("hello") вместо print "hello". Я знаю, что это болезненно." (с)

Bioreactor ★★★★★
()
Ответ на: комментарий от Sun-ch

Сложно это всё. Вот у меня сейчас такая штука установлена

Jython 2.2.1 on java1.6.0_13
Type "copyright", "credits" or "license" for more information.
>>> print "Принт!"
Принт!
>>>

И работает.

Bioreactor ★★★★★
()

Статья-то неплохая, вот только перевод смешной. Почему IBM'овцы имя автора статьи-оригинала указывают, а переводчика -- нет?

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

> Почему IBM'овцы имя автора статьи-оригинала указывают, а переводчика -- нет?

Переводчики IBM, как правило, хотят оставаться анонимными. На всякий случай :)

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

Там то же самое

Jython 2.5b3 (Release_2_5beta3:6092, Mar 10 2009, 15:34:57)
[Java HotSpot(TM) Client VM (Sun Microsystems Inc.)] on java1.6.0_13
Type "help", "copyright", "credits" or "license" for more information.
>>> print "Hello"
Hello
>>> print ("Hello")
Hello
>>>

Это не "болезненно"(с), пользуясь бимерской терминологией.

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

> Сложно это всё. Вот у меня сейчас такая штука установлена Jython 2.2.1 on java1.6.0_13

Слушай, скажи пжалста, этот Jython может запускать любые программы на питоне поверх виртуальной машины Java? Или есть какие-то ограничения, несовместимости? Без ускорителей, типа Psyco и так далее питон мне мало интересен... Но вот если поверх жабы пускать - другое дело. Надо один очень сложные проект на питоне, не мой, ускорить малость...

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

Я не большой спец по питону. Можно скачать, попробовать.

Мне интересно, как джайфон джавовские классы в пайфон "заглатывает". А это он делает хорошо. По меньшей мере, для моих задач.

Bioreactor ★★★★★
()

vytмне больше интерестно вот что. наткнулся тут http://www.python.org/dev/peps/pep-3100/#core-language на третий пункт:
- Add optional declarations for static typing [45] [10] [done]
и это в ПЕПе питон3000. как это понимать? я правильно понимаю, что это, по сути, опциональная статическая типизация, по крайней мере, для параметров функции?

val-amart ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

Jython не совместим на уровне РЕР-ов. Например, при работе с СУБД. По причине того, что работает с джавой, в которой многое по другому. Но, много чего совместимо с СРython

cab ★★★★
()
Ответ на: комментарий от val-amart

> и это в ПЕПе питон3000. как это понимать? я правильно понимаю, что это, по сути, опциональная статическая типизация, по крайней мере, для параметров функции?

Это если подходить к вопросу _очень_ формально. На самом деле, это чисто текстовые аннотации, на которые стандартный компилятор не обращает внимания.

tailgunner ★★★★★
()

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

Hjorn
()
Ответ на: комментарий от val-amart

Это не совсем статическая типизация, т.к. проверка, само собой, будет проводится во время выполнения, но зато проверять можно не только типы параметров, но и много чего ещё. http://code.activestate.com/recipes/572161/ Вот пример реализации.

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

>Статья-то неплохая, вот только перевод смешной. Почему IBM'овцы имя автора статьи-оригинала указывают, а переводчика -- нет?

Это видимо IBM_dW, либо, по крайней мере на том же движке

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

Мне нравится, то что кода надо меньше пейсать, короче текст получается.

from pawt import swing
from java.lang import System
import java

def exit(e): System.exit(0)

f = swing.JFrame('Jython', visible=1)
b = swing.JButton('OK', actionPerformed=exit)
f.contentPane.add(b)
f.setSize(200, 100)

Не надо специального кода для actionPerformed.

Для баз данных - прямо можно обращаться к наработкам на Хибернейте.

Bioreactor ★★★★★
()

Терпеть не могу, когда _требуют_ указывать в строке аргументы по номеру.

Для отладки бывает очень удобно писать print "%s %s" %(x,y), а потом если надо добавить еще один, то дописывать print "%s %s %s" %(x,y,z).

накой хрем мне каждый раз заниматься арифметикой первого класса, нумеруя переменные?

Да, я согласен, когда нумерация, удобна и полезна, и таких случаев много. Но не надо уж убивать старый добрый позиционный метод-то!

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

> Терпеть не могу, когда _требуют_ указывать в строке аргументы по номеру.

Читайте внимательнее.

"Этот стиль является недостаточно гибким, поэтому в Python 3 появился новый способ форматирования строк (хотя и оператор %, и модуль string.Template в версии 3 остались)."

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

Ситуация, как и с аналогом на Це. Когда нужна скорость, то лучше чистая джава, чем жабозмей. Плюч приплываем к проблеме динамической типизации. А вот для всяких правил - жабозмей вполне ниче. Хотя лучше Rhino - он жрет всего 0,5 метра, в то время как жабозмей - 37.

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

> Начать можно отсюда: http://docs.python.org/3.0/whatsnew/3.0.html

Спасибо. Поизучаю на досуге. Хотя беглый обзор ничего интересного не выявил. Одни только сглаживания шероховатостей не добавляют мотивации использовать 3.0. Насколько я понимаю, опциональную статическую типизацию не осилили. А ведь Гвидо вроде обещал ещё лет пять назад. Наверно проще язык с нуля создать, чем адаптировать Питон под статику.

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