LINUX.ORG.RU

Знакомство с Python 3: Часть 2. Более сложные темы

 ,


0

0

В предыдущей статье о Python 3—также известном как Python 3000 или Py3K— обсуждались некоторые простые изменения языка, нарушающие обратную совместимость, такие как новая функция print(), тип данных bytes и изменения в типе string. Здесь, во второй части, изучаются более сложные темы, большинство из которых также нарушает обратную совместимость с версиями 2.х: абстрактные базовые классы (abstract base classes или ABC), метаклассы, аннотации функций и декораторы, поддержка целочисленных констант, иерархия числовых типов и изменения в возбуждении и перехвате исключительных ситуаций.

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

★★★

Проверено: hibou ()

Re: Знакомство с Python 3: Часть 2. Более сложные темы

бимеробот похоже новости автоматом генерит, на основании ИИ.

shutty ()

Re: Знакомство с Python 3: Часть 2. Более сложные темы

ждемс на быдлохабре с бурными обсуждениями

real_maverick ★★★ ()

Re: Знакомство с Python 3: Часть 2. Более сложные темы

> гвидо не знал что такое proper tail call optimization и на основе этого незнания дизайнил питон.

Ужас, ужас. Как жить теперь? Питон уже снес.

tailgunner ★★★★★ ()

Re: Знакомство с Python 3: Часть 2. Более сложные темы

бредовый язык с бредовыми идеями, фтопку.

Tu3eK ()

Re: Знакомство с Python 3: Часть 2. Более сложные темы

и вообще хватит публиковать всякую муть

Tu3eK ()

Re: Знакомство с Python 3: Часть 2. Более сложные темы

Сначала границы непонимаемости перешёл PL/1, потом C++, теперь вот питон к ним приближается...

gns ★★★★ ()

Re: Знакомство с Python 3: Часть 2. Более сложные темы

Вдохнул дым горящих исходников питона... До сих пор прет

MiPh ()

Re: Знакомство с Python 3: Часть 2. Более сложные темы

круто

kto_tama ★★★★★ ()

Re: Знакомство с Python 3: Часть 2. Более сложные темы

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

olegsov ()

Re: Знакомство с Python 3: Часть 2. Более сложные темы

Кому это нужно - поймут обрадуються и будут юзать. Кому не нужно(а таких я думаю большинство) тот просто не юзает эти фичи.

stalkerg ★★★★★ ()

Re: Знакомство с Python 3: Часть 2. Более сложные темы

Ветераны тут непричем.

The name is seen as either "PL/1" (Arabic digit "1") or "PL/I" (Roman numeral "I"). When first introduced, the language name used the digit (for example, the March 1968 IBM language specifications (Y33-6003-0).) But by late 1976, when the ACM SIGPLAN Working Group released the formal definition, it used the roman numeral instead. In general, since then the roman numeral is most commonly used.

http://en.wikipedia.org/wiki/PL/1

www_linux_org_ru ★★★★★ ()

Re: Знакомство с Python 3: Часть 2. Более сложные темы

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

the_moon ()

Re: Знакомство с Python 3: Часть 2. Более сложные темы

>до сих пор корежит от необходимости следить за отступами.

Боюсь представить какой ужас Вы пишете на других языках (например, с C-style синтаксисом). Может в вашем случае Python - это единственно верный выход?

PS: тоньше, тоньше нужно

crank ()

Re: Знакомство с Python 3: Часть 2. Более сложные темы

> рушат мои стройные ряды ифов и дефов

а надо в комментариях поставить фигурные скобки и написать препроцессор который будет расставлять отступы по фигурным скобкам.

Например так

#!/usr/bin/env python

if 1:

#{

if 1:

#{

print "hello world"

#}

else:

#{

print "you will never see it"

#}

#}

Кстати при редактировании vi будет выделять парные фигурные скобки.

sign ()

Re: Знакомство с Python 3: Часть 2. Более сложные темы

Вот кстати и скрипт для восстановления отступов - нужно заменить <space> на пробел

#!/usr/bin/env python

import sys

indent = 0

for line in sys.stdin.xreadlines():

<space>if line.strip() == '#}': indent -= 2

<space>print ' ' * indent + line.strip()

<space>if line.strip() == '#{': indent += 2

sign ()

Re: Знакомство с Python 3: Часть 2. Более сложные темы

> а надо в комментариях поставить фигурные скобки и написать препроцессор который будет расставлять отступы по фигурным скобкам.

:)

const86 ★★★★★ ()

Re: Знакомство с Python 3: Часть 2. Более сложные темы

> Уже пол года пытаюсь кодить на питоне и до сих пор корежит от необходимости следить за отступами.

Э-э-э, надо перестать использовать /bin/cat в качестве редактора?

P.S. ed'ом тоже, видимо, сложновато. А вот в "искаропки" емаксе или _настроенном_ vim'е уже всё хорошо. И да, сдвиг блока вправо или влево - одно нажатие кнопки, ага.

AlexM ★★★★★ ()

Re: Знакомство с Python 3: Часть 2. Более сложные темы

Python 3000 или Пук ?

kyxap ()

Re: Знакомство с Python 3: Часть 2. Более сложные темы

> Э-э-э, надо перестать использовать /bin/cat в качестве редактора?

При чём тут редактор? Внимательно следить за отступами нужно даже при чтении. Это особенно увлекательно, если функция не помещается целиком на один экран. Хотя конечно редактор с вертикальными линиями может здорово помочь. Жаль в емаксе такого нет.

> И да, сдвиг блока вправо или влево - одно нажатие кнопки, ага.

Ага, только делать это надо очень осторожно, чтобы логическую стуктуру не поломать. А то ведь у Питона синтаксис хрупкий и необратимый. Случайное нажатие на Tab или Backspace - и вот у нас уже совсем другая синтаксически корректная программа. Справедливости ради, емакс отчасти решает эту проблему. Вообще, программирование на Питоне в простом текстовом редакторе - это боль... Даже вим не спасает. Надо ж было Гвидо так отличиться с этим извратным и, что важнее, нестандартным способом разграничения блоков.

Hjorn ()

Re: Знакомство с Python 3: Часть 2. Более сложные темы

бред. во-первых случайный таб причведет к ошибке т.к. отступы увеличиваются только после опредеденных конструкций - if, def, for, while и т.п.

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

вообще это всё интуитивно, проблемы с этими элементарными вещами возникают только у тех кто специально проблемы ищет. ну или у патологически криворуких наверное ...

olegsov ()

Re: Знакомство с Python 3: Часть 2. Более сложные темы

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

Даже когда начинал не корежило. Сразу открыл для себя scite в гуях и vim в консоле.

ossa ()

Re: Знакомство с Python 3: Часть 2. Более сложные темы

> Уже пол года пытаюсь кодить на питоне и до сих пор корежит от необходимости следить за отступами. Больше всего проблем с этим.

Идите уже обратно в дворники. Программировать не всем дано.

Страшно представить какую кашу вы писали в фигурно-скобочных языках.

yk4ever ()

Re: Знакомство с Python 3: Часть 2. Более сложные темы

> Даже вим не спасает.

Вим - это кошмар. Им следует пользоваться только при крайней необходимости.

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

Отступы - это вообще лучшее, что есть в питоне.

yk4ever ()

Re: Знакомство с Python 3: Часть 2. Более сложные темы

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

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

cab ★★★★ ()

Re: Знакомство с Python 3: Часть 2. Более сложные темы

> Вим - это кошмар. Им следует пользоваться только при крайней необходимости.

Тролишь? (хотя я сам емаксер)

> Отступы - это вообще лучшее, что есть в питоне.

Спорно. Из-за них до сих пор нормальной лямбды не сделали. И не сделают. Что плохо.

cab ★★★★ ()

Re: Знакомство с Python 3: Часть 2. Более сложные темы

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

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

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

matumba ★★★★★ ()

Re: Знакомство с Python 3: Часть 2. Более сложные темы

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

matumba ★★★★★ ()

Re: Знакомство с Python 3: Часть 2. Более сложные темы

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

Ты сам сессию-то сдал?

tailgunner ★★★★★ ()

Re: Знакомство с Python 3: Часть 2. Более сложные темы

> Вы не находите такой дизайн несколько мудаическим? Напоминает "сначала напишем, потом спроектируем".

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

>Либо у нас одна нормальная функция(которая и обязана проверять вход),

У нас динамическая типизация. И юнит-тесты не панацея. Тем более все эти проверки только загромождают код, отвлекая от основной проблемы, которую решает функция.

> либо функция-диспетчер, вызывающая несколько чужих.

И по всему коду искать вызову функции, когда это можно сделать в одном месте?

cab ★★★★ ()

Re: Знакомство с Python 3: Часть 2. Более сложные темы

Да это-то правда, дело не в выборе редактора, но в средствах автоматического генерирования кода. Сейчас вон пошла мода на использование питона вместо javascripta. Вот где грабли могут отрасти, особенно в связи с вольным отношением самых разных html-препроцессоров и прочих скриптов к переводу строки.

gns ★★★★ ()

Re: Знакомство с Python 3: Часть 2. Более сложные темы

> До тех пор, пока не начинаешь генерить код автоматически.

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

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