Несмотря ни на что, я нашел немного свободного времени на этой неделе. Вместо того, чтобы делать что-то разумное, например, убирать в гараже или заниматься физическими упражнениями, я воспользовался возможностью выучить новый язык программирования: Python.
Как и читатели SitePoint, я порезался на PHP. Мне стало очень комфортно с годами, бородавками и все такое. PHP по-прежнему остается надежным выбором, но PHP за последнее время не сильно изменился. Между тем, виды приложений, над которыми я работал, резко возросли как по размеру, так и по сложности.
Python имеет много общего с PHP: это динамически типизированный язык сценариев с открытым исходным кодом, с отличной документацией и процветающим сообществом. Оба языка также немного странны, когда дело доходит до обработки текста Unicode.
В отличие от PHP, Python изначально не был разработан как язык для веб-разработки — это общий язык программирования, который, как оказалось, имеет несколько превосходных библиотек и сред для создания веб-сайтов, таких как Django . Это может звучать как аргумент против Python, но оказывается, что когда вы начинаете писать большие веб-приложения, большая часть вашего кода не имеет ничего общего с HTML, а функции PHP, дружественные к HTML, только мешают.
Хватит махать рукой! На что похож код?
Давайте посмотрим на некоторые полезные функции кода Python.
Наиболее отличительной чертой кода Python является отсутствие фигурных скобок или других разделителей вокруг блоков кода. Вместо этого Python использует отступ вашего кода для обозначения блоков:
print "Let's count to ten!" for i in range(10): number = i + 1 print number print "All done!"
Приведенный выше код включает цикл for
который будет выполняться десять раз. Две строки после оператора for
имеют отступ, чтобы указать, что они находятся внутри цикла for
. Последняя строка не имеет отступа, поэтому Python знает, что цикл for
завершен.
Сначала кажется пугающе хрупким доверять отступам, чтобы описать структуру вашего кода; но как только вы привыкнете к этому, вы заметите, что ваш код выглядит менее загроможденным. Более того, вам будет проще читать код Python, написанный другими, потому что разработчики вынуждены аккуратно и последовательно делать отступы в своем коде.
Python имеет ряд удобных маленьких функций, которые делают общие задачи менее громоздкими, чем в других языках. Возьмем, например, множественное присваивание, которое позволяет избежать создания временных переменных:
a = 1 b = 2 print a, b # prints '1 2' a, b = b, a+b print a, b # prints '2 3'
В Python также есть несколько удобных функций для работы с последовательностями. Они позволяют разбивать и комбинировать списки (эквивалентные массивы PHP) и текстовые строки, используя простой согласованный синтаксис, вместо того, чтобы запоминать непонятные имена функций для каждого.
Понимание списков в Python позволяет быстро создавать сложные списки из простых списков с минимумом кода. На первый взгляд их немного сложно понять, но они быстро становятся незаменимыми:
Но помимо всего этого синтаксического сахара, самой большой особенностью Python, которую я ценю после многих лет программирования PHP, является его разумная система модулей и пакетов для организации кода в несколько файлов. В PHP, когда один сценарий include
s (или require
s) другой сценарий, он рискует иметь свои собственные переменные, функции и имена классов, перекрываемые сценарием, который он включает.
Python автоматически устанавливает отдельное пространство имен для каждого файла (называемого модулем), который импортирует ваша программа, чтобы избежать конфликтов имен. Это освобождает вас от необходимости выбирать более короткие и более естественные имена (особенно для классов в больших проектах), в то же время заставляя вас больше задумываться о структуре вашего кода.
С чего начать?
Нет смысла изучать новый язык, если у вас нет причин его использовать. В течение последних двух лет этой причиной для многих веб-разработчиков был Django . Поэтому лучше всего начать с статьи о Django Djumpstart .
В последнее время многие разработчики вновь проявляют интерес к Python, потому что это язык разработки для Google App Engine . Стоит взглянуть на App Engine, прежде чем погрузиться в Python.
Говоря о погружении в Python, книга Марка Пилигрима Dive Into Python доступна для бесплатного чтения в Интернете и является отличным способом выучить язык с нуля. Если вы ищете что-то более глубокое и детальное, официальное руководство по Python будет полезным, хотя и немного сухим. Это также значительно более актуально.