Осваиваем Python по-быстрому

Вопросы написания собственного программного кода (на любых языках)

Модератор: Olej

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Осваиваем Python по-быстрому

Непрочитанное сообщение Olej » 30 июл 2013, 10:31

Эта тема появилась как следствие того, что несколько близких мне людей, из числа молодёжи, попросили поддержать их начинание в осовении Python.
Я абсолютно убеждён, что:
- Python это как-раз из тех инструментов, которые на сегодня стоит осваивать, терять на это время (в отличие, например, от PHP и др.)
- квалифицированный программист (освоивший базовые понятия) освоит Python за неделю, а через 2 недели будет производить на нём код профессионального уровня (это не сложности C, или, тем более, C++)
- я смог бы обучить программированию в Python даже обезьяну ... месяца за 2 (если без всяких предварительных знаний и навыков). :lol:

Итак, приступаем...

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Осваиваем Python по-быстрому

Непрочитанное сообщение Olej » 30 июл 2013, 11:33

Olej писал(а):Итак, приступаем...
Про Python на этом форуме уже много написано: здесь.

1. Но всё, что там разбросано написано, нужно привести в систему...

2. Осваивать программный инструмент можно только одним единственным способом: брать, и с первой же минуты начинать писать простейшие программы, экспериментировать с кодом... - программирование - это не мат. анализ, это не наука, а ремесло (как, например, ремесло гончарное или кузнечное ;-) ), здесь "вхолостую" чтение книжек ничего не даст, нужно осваивать через руки.
А для этого нужно первейшим делом установить систему Python (или именно CPython интерпретатор, как его называют строго), т.е. первейшие вопросы:
- где взять?
- что взять? (версия и т.д.)
- как установить? ... в разных операционных системах: Windows, Linus, Solaris, ... (MacOS ?)
- как проверить работоспособность (полноту установки)?
Некоторые вопросы здесь и для меня в диковинку (например, "в Windows"), и я с интересом их "пробью"...

3. Далее ... по Python очень много написано, руководств, книг, статей... - модно это ;-)
Из-за этого, к сожалению, большая часть написанного по Python - барахло, это - спекуляции, когда автор пишет для того, чтобы засветиться, а не для того, чтобы изложить предмет...
Поэтому следующий вопрос, который нужно описывать здесь в теме - те источники информации, которые содержательные, которыми стоит пользоваться, чтобы с максимальной эффективностью не терять время.
И здесь же: комментировать источники - где что читать, а что и пропустить можно, потому что все они сильно неоднородные, как правило.

4. Ну а дальше... пишем для себя примеры кода + если что-то непонятно и не получается, то показываем сюда в тему и решаем вопрос + показываем сюда же в тему какие-то примечательные примеры кода, которые раскрывают какие-то ... особенные особеннсти Python...

Все кому интересен такой план - подключайтесь.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Осваиваем Python по-быстрому

Непрочитанное сообщение Olej » 30 июл 2013, 12:17

Olej писал(а): 2. Осваивать программный инструмент можно только одним единственным способом: брать, и с первой же минуты начинать писать простейшие программы, экспериментировать с кодом... - программирование - это не мат. анализ, это не наука, а ремесло (как, например, ремесло гончарное или кузнечное ;-) ), здесь "вхолостую" чтение книжек ничего не даст, нужно осваивать через руки.
А для этого нужно первейшим делом установить систему Python (или именно CPython интерпретатор, как его называют строго), т.е. первейшие вопросы:
- где взять?
- что взять? (версия и т.д.)
- как установить? ... в разных операционных системах: Windows, Linus, Solaris, ... (MacOS ?)
- как проверить работоспособность (полноту установки)?
Что касается инсталляции CPython и создания среды для тестирования и экспериментов...

По этому поводу есть неплохое вот такое описание: Python: начало. Как установить Python в Windows и Linux?
Оно "всего" годичной давности (30.03.2012), так что всё ещё достаточно актуальное.
Не всё там а). бесспорно + б). исчерпывающе ... но для 1-го приближения вполне годится.

Здесь есть ещё часто задаваемый вопрос: какую версию устанавливать - 2.Х или 3.Х?
- 2.Х является массово используемой в существующих проектах и приложениях...
- 3.Х - свежая, следующий шаг ... но для неё адаптировано совсем не так много модулей и пакетов...

Вот варианты - Какую версию Python выбрать?
Скорее всего, у вас не получится полностью отказаться от Python 2, так или иначе вам придется с ним сталкиваться. Однако, это вовсе не значит, что стоит отказываться от Python 3, кардинальных отличий между этими версиями не так уж и много, а основная проблема совместимости заключается именно в модулях.

По этому, я бы рекомендовал учить обе версии. Начните, к примеру, с Python 3, а затем изучите отличия версий. Когда начнется массовый переход на Python 3, уверен, вам пригодятся знания обоих версий.
На данный момент надо знать обе версии. Думаю, через 2-3 года все основные фреймворки и библиотеки будут поддерживать Python3. Но в конторах и проектах еще останется куча работающего кода на Python2.x, который нужно поддерживать, а переписывать заново на 3 никто не собирается. Так что профессионал должен учить обе версии, благо, они не так уж и сильно различаются.

отвечен 2 Авг '12
... ну, и т.д. ...

Ну и вот это ...
http://www.xakep.ru/magazine/xA/122/090/1.asp
Стоит ли прямо сейчас переходить на Python 3.0? Вопрос сложный. Очевидно, что процесс перехода на новую ветку будет довольно медленным, ведь сейчас написаны горы кода, который не будут работать с третьей версией. Гвидо кто-то задал вопрос: «Я собираюсь учить питон с нуля, какую версию лучше для этого использовать?». Мэтр ответил, что лучше все-таки выбрать 2.x ветку, так как пройдет еще год или два прежде, чем она будет окончательно вытеснена новой версией. Однако разработчикам уже сейчас стоит задумываться о портировании своего кода на Python 3.x.

Самое интересное, что область пересечения старой и новой веток слишком мала, чтобы комфортно писать код, который бы без изменений работал в обеих версиях. Поэтому процесс портирования может оказаться нетривиальным. К счастью, имеется много подручных средств, призванных облегчить процесс. Одно из них – скрипт с названием 2to3. Идет он в поставке вместе с последними версиями CPython. Скрипт автоматически конвертирует код, написанный для 2.x, в код для 3.x. Где он не справляется, – там выдается предупреждение.
... это инение от автора Python.
И там же:
Языку Python уже больше семнадцати лет, а это весьма почтенный возраст для любой компьютерной технологии. С годами он не устаревает и не подвергается забвению, а наоборот - становится лучше и более востребованным. Третьего декабря 2008 года вышла очередная версия языка - Python 3.0, а четвертого - Python 2.6. Этого события программисты ждали очень долго. Дело в том, что разработчики решили инкрементировать старшую циферку не просто так. Многие новые идеи нельзя реализовать без потери обратной совместимости, а поскольку на питоне уже написана огромная масса кода, то делать это очень не желательно. Тем не менее, разработчики решились на этот шаг. Они выкинули из него весь мусор, освободились от многих устаревших конструкций и добавили несколько нововведений.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Осваиваем Python по-быстрому

Непрочитанное сообщение Olej » 30 июл 2013, 23:33

Olej писал(а): Про Python на этом форуме уже много написано: здесь.

1. Но всё, что там разбросано написано, нужно привести в систему...
Что касается приведения в порядок материалов по Python уже обсуждавшихся на форуме: часть примеров кода уже прошла кой-какую проработку и расширение, и помещены вот в этом блоге: Python: примеры и тесты (начиная с этой 1-й части и далее ... на сегодня до части 5).

P.S. Часть 1-я этих примеров, как-раз касается функционального стиля программирования в Python, и её то можно (нужно?) пропустить при 1-м чтении ... на потом. ;-)

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Осваиваем Python по-быстрому

Непрочитанное сообщение Olej » 01 авг 2013, 13:33

Olej писал(а): - Python это как-раз из тех инструментов, которые на сегодня стоит осваивать, терять на это время (в отличие, например, от PHP и др.)
Olej писал(а): по Python очень много написано, руководств, книг, статей... - модно это
Как сегодня написал мне в письме давний коллега, последние годы занимающийся профессиональной разработкой проектов на Java:
Python - очень модно, в MIT он используется как учебный язык в курсе алгоритмов и структру данных.
Относительно связи с Java все совершенно верно, даже знаю Киевскую фирму, которая в своих проекта используте именно связку Python и Java.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Осваиваем Python по-быстрому

Непрочитанное сообщение Olej » 01 авг 2013, 17:02

Olej писал(а): Что касается инсталляции CPython и создания среды для тестирования и экспериментов...

По этому поводу есть неплохое вот такое описание: Python: начало. Как установить Python в Windows и Linux?
Оно "всего" годичной давности (30.03.2012), так что всё ещё достаточно актуальное.
Поскольку большинство изучающих Python устанавливает Windows-версию :lol: ... то я тоже для сравнения проделаю эту установку:
- чтобы проверить как с этим обстоит дело на сегодня, 01.08.2013
- чтобы иметь возможность проверить и сравнить, если у кого возникнут сложности и сомнения с кодом на Python
- чтобы посмотреть вопросы переносимости кода на Python меж операционными системами
- ... в частности - вопросы локализации вывода на консоль.

Вот мой пошаговый протокол установки:

1. Releases
The current production versions are 2.7.5 and 3.3.2.

Python 3.3.2 (May 15, 2013)
Python 3.2.5 (May 15, 2013)
Python 3.1.5 (April 10, 2012)
Python 3.0.1 (February 13, 2009)
Python 2.7.5 (May 15, 2013)
Python 2.6.8 (April 10, 2012)
Python 2.5.6 (May 26, 2011)
Python 2.4.6 (December 19, 2008)
Python 2.3.7 (March 11, 2008)
Python 2.2.3 (May 30, 2003)
Python 2.1.3 (April 8, 2002)
Python 2.0.1 (June 2001)
Python 1.6.1 (September 2000)
Python 1.5.2 (April 1999)
Older releases: Source releases, binaries-1.1, binaries-1.2, binaries-1.3, binaries-1.4, binaries-1.5
Выбираю 3.3.2

2. обычная для Windows инсталляция:
py1.GIF
py1.GIF (25.94 КБ) 15568 просмотров
py2.GIF
py2.GIF (25.93 КБ) 15566 просмотров
... путь инсталляции меня, собственно, не волнует... - вот, собственно, и всё.

3. проверяем работоспособность того, что установили ... в меню "Пуск и т.д." появились 2-е возможности запуска:
py3.GIF
py3.GIF (12 КБ) 15568 просмотров
- здесь, заодно, я уже проверил отличие версии 2.Х от 3.Х - print из разряда операторов перенесен в разряд функций.
py4.GIF
py4.GIF (9.66 КБ) 15568 просмотров
P.S. для любителей консольной строки (для себя любимого) добавлю ещё 3-й способ: в любом консольном приложении (у меня это FAR) набираете "Python":
py5.GIF
py5.GIF (10.78 КБ) 15567 просмотров
P.P.S. Теперь можно сравнивать поведение Python установленный в Windows, с Linux...
Ещё бы интересно его установить, скажем, в OpenSolaris ... из исходников.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Осваиваем Python по-быстрому

Непрочитанное сообщение Olej » 01 авг 2013, 18:17

Olej писал(а): - чтобы посмотреть вопросы переносимости кода на Python меж операционными системами
- ... в частности - вопросы локализации вывода на консоль.
Куда интереснее (чем в режиме диалогового интерпретатора) выполнение отдельного Python-приложения из файла кода (p1.py ... использую код, когда-то написанный под 2.Х преобразованный под 3.Х):

Код: Выделить всё

# -*- coding: utf-8 -*-

import sys

def factorial( n ):
    if n == 1: return 1
    else: return n * factorial( n - 1 ) 

if len( sys.argv ) > 1:  n = int( sys.argv[ 1 ] )
else: n = int( input( "число?: " ) )

print( "число = ", n, " факториал = ", factorial( n ) )
Вот тут 1-я неожиданность: если это набрать (скопировать) в текстовом редакторе Windows (любом), то на выполнении получаем что-то типа:

Код: Выделить всё

C:\Python-test>p0.py
  File "C:\Python-test\p0.py", line 10
SyntaxError: (unicode error) 'utf-8' codec can't decode byte 0xf7 in position 0:
 invalid start byte
Редактор Windows хочет рисовать буквы в своей кодировке CP-1251, а Python использует (по умолчанию!) кодировку Unicode в представлении UTF-8. Вот если этот же код отредактировать в Python оболочке IDLE - тогда всё становится в порядке (выполнение прямо из оболочки IDLE):
py6.GIF
py6.GIF (11.12 КБ) 15566 просмотров
Что интереснее (и куда важнее!), что выполнение происходит точно так же и из консоли Windows:

Код: Выделить всё

C:\Python-test>p1.py
число?: 5
число =  5  факториал =  120

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Осваиваем Python по-быстрому

Непрочитанное сообщение Olej » 01 авг 2013, 19:11

Olej писал(а): Что интереснее (и куда важнее!), что выполнение происходит точно так же и из консоли Windows:

Код: Выделить всё

C:\Python-test>p1.py
число?: 5
число =  5  факториал =  120
В отличие от UNIX (Linux) запуск Python-приложений/скриптов происходит по ассоциации с расширением имени файла, о чём есть в учебнике из комплекта документации самого проекта Python:
У систем с операционной системой Windows нет такого понятия, как исполняемый режим. Установщик Python автоматически связывает файлы .py с файлом python.exe, таким образом двойной клик на файле Python запустит его в виде сценария. Расширение может быть и .pyw в случае, если окно консоли (которое, обычно, отображается) при запуске сценария подавляется.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Осваиваем Python по-быстрому

Непрочитанное сообщение Olej » 01 авг 2013, 19:58

Olej писал(а): Редактор Windows хочет рисовать буквы в своей кодировке CP-1251, а Python использует (по умолчанию!) кодировку Unicode в представлении UTF-8.
Хотя добиться ровно того же результата можно, переписав предыдущий пример так:

Код: Выделить всё

# -*- coding: cp1251 -*-

# ... а дальше в точности всё как и было...
И в итоге:

Код: Выделить всё

C:\Python-test>p0.py
число?: 5
число =  5  факториал =  120
Но это не лучший способ, в расчёте на переносимость файлов кода между операционными системами, где в Linux уже повсеместно Unicode в кодировке UTF-8.

P.S. По поводу кодировок смотрим в каталоге инсталляции Python содержимое каталога lib/encoding, и, в частности файл там же с именем aliases.py

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Осваиваем Python по-быстрому

Непрочитанное сообщение Olej » 01 авг 2013, 21:21

Olej писал(а): 3. Далее ... по Python очень много написано, руководств, книг, статей... - модно это
Olej писал(а): В отличие от UNIX (Linux) запуск Python-приложений/скриптов происходит по ассоциации с расширением имени файла, о чём есть в учебнике из комплекта документации самого проекта Python:
У систем с операционной системой Windows нет такого понятия, как исполняемый режим. Установщик Python автоматически связывает файлы .py с файлом python.exe, таким образом двойной клик на файле Python запустит его в виде сценария. Расширение может быть и .pyw в случае, если окно консоли (которое, обычно, отображается) при запуске сценария подавляется.
Вообще то, прежде любых описаний, книг и учебных курсов я пробежал бы вот эти переводы из документации проекта Python:
Учебник Python 3.1
Справочник по языку Python 3.1
Почему я показываю переводы, а не оригиналы этих документов? Потому что:
- там в начале есть ссылки и на оригиналы (можно перейти)...
- переводы очень хорошего качества, выполнены профессионально
- переводы достаточно свежие, поспевают за развитием проекта
- ... потому, что бегло пробежать текст, всё таки, быстрее и проще на родном языке.

Ответить

Вернуться в «Программирование»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 4 гостя