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
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.