logo
Ещё

Python для начинающих – самый понятный самоучитель

Питон – это крайне дружелюбный язык программирования с низким порогом входа и большой востребованностью на рынке. Он ценится как сам по себе (скрипты на серверах, парсеры), так и в качестве инструмента разработки для более сложных технологий, вроде Big Data или AI. Начинающий разработчик (junior) может рассчитывать на зарплату в 60 000 рублей, через год, с ростом разработчика до middle-уровня, зарплата поднимется до 120 000 – 130 000 рублей в месяц. Этот материал – Python для начинающих – позволит вам понять, что это за язык и что такое программирование (и computer science) в общем. «Питон для начинающих» не сделает вас junior-разработчиком (учиться на джуна нужно минимум полгода, плюс нужны дополнительные технологии вроде Git и SQL), но вы можете начать учить Python с нуля по этому материалу, и когда проработаете основные конструкции – будете понимать, за что вам браться дальше.


О языке Python

Пайтон с нуля освоить очень просто в первую очередь благодаря синтаксису языка. В отличие от непонятной классо-ориентированной Java или местами очень странного JavaScript, интерпретатору Python вполне понятен «обычный человеческий» язык (английский). Конечно, написать «сделай мне скрипт с такими-то параметрами» не получится, но давайте посмотрим на пример кода:

user_input = input()

if user_input == "Hello":

print("Greetings!")

else:

print("I don't understand you")

В первой строке мы создали переменную, в которую записали то, что ввел пользователь. Затем мы проверили введенное – если он написал «Hello», то мы приветствуем его в ответ, иначе пишем, что не понимаем введенного инпута. И это – полностью рабочий скрипт, который можно запустить в IDE. Для сравнения: в Java нужно было бы создать пакет проекта, создать новый класс, прописать в этом классе метод main, подключить из стандартной библиотеки вывод данных, подключить из стандартной библиотеки ввод данных с клавиатуры, обернуть ввод данных в try-catch (а то вдруг всплывет исключение?), долго отлавливать проблемный и некорректный ввод строки. В Python же все организовано так, чтобы вы сели и тут же начали писать полезный код – и в плане программирования для начинающих такой подход работает отлично, потому что новичков не отпугивают непонятные конструкции и костыли языка.

Еще одна фишка языка, полезная для начинающих программистов – это ; и отступы. В отличие от многих других языков, в Python не обязательно отделять строки кода точкой с запятой, из-за этого новички изучают Python более быстро – не надо по полчаса отлавливать баг, вызванный отсутствием разделителя (особенно больно это в языках с большими программами на выходе, вроде C). Что касается отступов – у управляющих конструкций нет явных отметок начала и конца конструкции, блоки конструкций определяются отступами (как if-else и примера выше). Это хорошо для изучения программирования, потому что после написания кода вы можете пробежаться по нему глазами и быстро выделить все блоки управляющих конструкций – в Java, например, нередко возникает проблема с запуском кода, потому что вы во вложенном цикле не там поставили закрывающую }, и весь цикл сломался.

Что касается практического применения языка, то Python предоставляет инструменты для быстрой разработки и для разработки серьезных математических алгоритмов, из чего и исходят его основные сферы применения. Быстрота разработки в первую очередь ценится в сфере DevOps, где можно без лишних заморочек и глубоких навыков программирования написать скрипт для развертки контейнеров или парсер логов. Еще быстрота хороша для разработки сайтов – с помощью фреймворков типа Django можно создавать сайты буквально за вечер, что упрощает проверку бизнес-теорий. Парсеры сайтов тоже пишутся в основном на Python, и по этой теме есть множество бесплатных курсов на YouTube разной степени качества.

Что же касается серьезной математической разработки, то основные сферы применения Python – BigData и AI.

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

У Python есть ровно один минус – скорость работы компилятора/интерпретатора. Когда вы даете языку программирования какую-то задачу, ему нужно время, чтобы создать аналог любой переменной в понятной процессору форме, исполнить команду, создать структуру данных и так далее. Поскольку Python в первую очередь ориентирован на скорость написания кода, языку приходится жертвовать производительностью этого кода (детальное описание причин мы давать не будем, ибо придется отложить основы синтаксиса и углубиться в устройство интерпретатора, что вам сейчас не нужно). Для создания сайтов эта проблема не будет чувствоваться, а вот если вы решите написать приложение для обработки запросов в реальном времени или игру – придется уделить время не только написанию программы, но и оптимизации.

Хотя ради справедливости мы должны отметить, что сейчас Python поддерживает быстрые компиляторы типа PyPy, и это во многом решает проблему.

Для каких задач подходит

  • Быстрое создание скриптов.
  • Парсинг чего угодно.
  • Сайты.
  • Небольшие служебные приложения.
  • «Прокладки» между разными технологиями и языками программирования.
  • Big Data.
  • AI.

Установка Python и первые шаги

Чтобы изучить основы Python, вам нужно установить его. А для этого вам нужно сделать 2 вещи:

  1. Установить интерпретатор.
  2. Установить IDE.

Скачать и установить интерпретатор можно тут. Наводите мышкой на Downloads, жмете на «Скачать такую-то версию», скачиваете, запускаете, устанавливаете. Все настройки оставьте стандартными.


Среды разработки бывают разными, но для обучения лучше всего использовать PyCharm Community Edition. Он – мощный и бесплатный. Скачать его можно тут. Выберите Community-версию.


Все параметры установки оставьте стандартными. Все, готово – запускайте IDE, удаляйте стандартный приветственный скрипт и пишите код.


Основы Python

Здесь мы вкратце пройдемся по всем основам Python (версия языка – строго 3+). Про основы синтаксиса (как интерпретатор использует отступ и про ;) вы уже знаете, здесь вы начнете с изучения основ самого языка. Цель раздела – освоить базовые конструкции, после чего вы сможете писать простые скрипты и будете понимать, насколько вам интересна разработка.

Переменные и типы данных

Переменная – это основа почти любого языка программирования (за исключением ЯП с парадигмой функционального программирования, но это очень продвинутая тема). В переменной хранится некое значение, которое вы можете использовать в дальнейшем. Переменную нужно объявить, после чего присвоить этой переменной какое-то значение. Объявление строится очень просто: переменная = значение. Например:

some_string = “Hello”

seven = 7

point_five = 0.5

Если вы изучали другие ЯП, вы можете заметить, что здесь не указывается тип переменной. Кроме того, мы можем на лету присвоить переменной значение другого типа:

some_string = “Hello”

some_string = 5

Это все возможно потому, что Питон – язык без строгой типизации. Проще говоря, любая переменная может хранить любое значение. В других ЯП обычно нужно указывать тип, пример из Java:

int seven = 7;

Отдельный тип переменных – Boolean. Этот тип может принимать значения True или False – истина или ложь. Когда проверяется условие ветвления (об этом ниже), результат условия вычисляется до True или False, в первом случае тело ветки выполняется, во втором – нет.

Циклы

Переменные – это контейнеры для хранения информации, и обычно мы хотим с этой информацией что-либо сделать. Самое популярное действие – это прогон переменных через циклы. Цикл – это управляющая конструкция, которая выделяет как-то кусок кода. Этот кусок кода будет циклично выполняться, пока не будет достигнуто какое-либо условие. Типов условий может быть 2: либо пока что-то не произойдет, либо пока не закончится счетчик. Если мы пишем цикл с условием выхода, нам нужен цикл while:

i = 0

while i < 10:

print(i)

i += 2

Здесь мы заводим переменную i и присваиваем ее 0. Затем мы запускаем цикл: пока i меньше 10, мы выводим в консоль значение i, а затем увеличиваем значение переменной i на 2. В консоль выведется: 0 2 4 6 8

Если нам нужно перебрать какой-то диапазон, мы пользуемся циклом for. Цикл for в Python немного отличается от аналогичных циклов в других языках программирования. В Java вы, например, пишете что-то вроде такого:

for (int i = 0; i < 10; i++) {

…

}

То есть вы заводите счетчик, указываете условие окончания цикла, и на каждой итерации (проходе по телу цикла) увеличиваете счетчик на 1. В Python же стандартного цикла for не существует, его заменяет цикл for… each. For each получает на вход структуру данных и перебирает ее от начала до конца. Для перебора чисел нужно подавать структуру данных, сгенерированную функцией range:

for i in range(10):

print(i)

Эта конструкция выводит в консоль числа от 0 до 9. При желании мы можем указать границы и шаг в формате (начало, конец, шаг):

for i in range(0, 20, 3):

print(i)

В консоль будет выведено: 0 3 6 9 12 15 18.

В этот же цикл можно подавать другие итерируемые объекты вроде списков – в этом случае интерпретатор будет последовательно перебирать все значения списка.

Оператор ветвления

Если мы хотим, чтобы программа действовала определенным образом в зависимости от каких-то значений, мы пользуемся оператором if:

some_variable = 5

if some_variable == 3:

print("variable = 3")

elif some_variable == 5:

print("variable = 5")

else:

print("variable is not 3 or 5")

«==» – это проверка соответствия, условие будет истинным, если значение слева равно значению справа. If – это начала оператора ветвления, «если выполняется условие, то сделать вот это вот». Elif – это оператор, который будет проверяться, если первое if оказалось ложным, конструкций elif [условие] может быть несколько, и они будут проверяться одна за другой сверху вниз. Else – это блок, который выполнится, если все другие проверки условий окажутся ложными.

Есть одно упрощение, про которое вам стоит знать. Например, вы проверяете какую-то Boolean-переменную, если она истинна – делается одно, если нет – делается другое. В этом случае вам не нужно писать

if some_boolean == True:

Это считается плохим кодом. Вы можете написать

if some_boolean:

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

Строки

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

some_string = “Hello”

another_string = ‘world’

С помощью

len(some_string)

можно узнать длину строки. Можно обращаться к конкретному символу строки:

print(some_string[0])

выведет H. Строки можно соединять:

print(some_string + another_string)

Перебрать строку по символу можно через

for c in some_string

(без доступа к индексу) или

for i in range(len(some_string))

с последующим обращением

some_string[i]

Строки поддерживают срезы:

print(some_string[1:3])

выведет «el»,

print(some_string[::-1])

выведет «olleH». Дополнительных методов – десятки: capitalize(), swapcase(), title(), lower(), upper(), count(), find(), index(), strip(), replace(), … Если вам нужно работать со строками, обратитесь к документации.

Списки

Список – это упорядоченный массив каких-то данных. Списки работают практически так же, как и строки – для них работает len(), in/not in, index, доступ по индексу (индексы начинаются с 0), срезы и так далее. Создается список либо через прямое объявление типа

some_list = [1, 5, 4, 8]

либо через

some_list = list()

с последующим добавлением значений в список. Значение можно добавить через метод append:

some_list.append(9)

Списки нужны для хранения однородной информации в одном месте. Технически Python не запрещает вам хранить в одном списке информацию разных типов (числа и строки, например), но если вам нужно хранить информацию разного типа – лучше создать под каждый тип свой список. Кстати, можно создать список из списков – получите многомерную матрицу.

Пример программы

Предположим, что у нас есть два списка, в первом хранятся логины, во втором – пароли. Логин и пароль по одинаковому индексу принадлежат одному пользователю, то есть в первой ячейке первого списка – логин первого пользователя, в первой ячейке второго списка – пароль первого пользователя. Нам нужно проверить введенные пользователем данные и дать ему доступ к аккаунту или отказать в доступе. Логины мы проверяем без учета регистра, пароли – с учетом регистра. Код будет выглядеть так:

logins = list(["admin", "admin2", "tamaraivanovna78", "kostyan", "valera"])

passwords = list(["admin", "admin2", "tamaraivanovna78", "kostyan", "valera"])

print("Введите логин: ")

user_login = input()

print("Введите пароль: ")

user_pass = input()

access = False

for i in range(len(logins)):

if user_login.lower() == logins[i] and user_pass == passwords[i]:

access = True

if access:

print("Доступ разрешен")

else:

print("В доступе отказано")

Последний блок if-else можно переписать с помощью тернарного оператора:

print("Доступ разрешен" if access else "В доступе отказано")

Что дальше?

Знания, изложенные выше, помогут вам понять общие принципы языка и написать простенькие скрипты. Если вы хотите углубиться в тему – вы можете пройти какой-нибудь бесплатный развернутый курс по Питону, например – курс со Степика. Но ни эта статья, ни бесплатный курс не приведут вас к вакансии junior-разработчика, потому что в них мало реальной практики и нет информации о дополнительных технологиях – системы контроля версий, базы данных, трэкинг задач, фреймворки, ООП и так далее. Если хотите стать разработчиком – нужно проходить серьезный платный курс с ментором:

  • Инженер-программист Python. Годовой курс, через 9 месяцев сможете устроиться на первую работу. На курсе вы пройдете все основы языка, изучите ООП, выучите основные фреймворки и научитесь работать с SQL/NoSQL, Git и другими вспомогательными технологиями.
  • Python Developer. Длительность обучения – 10 месяцев, в процессе вы разработаете 2 больших проекта для портфолио. После курса вам помогут с трудоустройством. 
  • ПРОФЕССИЯ: PYTHON-РАЗРАБОТЧИК. Длительность – 10 месяцев, можно договориться на интенсивное обучение. Что примечательно – на курсе вас сразу «бросят в бой», то есть вы будете изучать основы языка параллельно с Flask и базами данных. Курс вообще очень насыщенный, хотя и тяжелый.

FAQ

Нужно ли учить Python 2?

Нет, в Python обучение сейчас полностью построено на Python 3, вторая версия считается устаревшей и выводится из оборота. Если вы будете знать 3-ю версию – вы разберетесь во второй при необходимости.

Что такое «алгоритмы» и нужно ли их учить?

Алгоритм – это последовательность действий, приводящая к результату. Даже простенькая программа выше – это алгоритм. Алгоритмы – неотъемлемая часть computer science, и вам придется их учить. Но если вы не предрасположены к математике (а она лежит в основе алгоритмов) – вы можете учить их поверхностно и пользоваться готовыми решениями. Начать изучение алгоритмов проще всего с лекций Тимофея Хирьянова.

Что такое «фреймворки»?

Фреймворк – это готовый каркас для разработки приложения. Фреймворки бывают разными, обычно они заточены под конкретные задачи. Фреймворки Питона вам учить в любом случае придется, на «голом» Python серьезные приложения не разрабатывают – все делают на фреймворках.

Подведем итоги

Тезисно:

  • Python – крайне легкий язык для новичков.
  • Junior Python-разработчики зарабатывают от 60 000 рублей в месяц.
  • Если вы хоть немного знаете английский, то читать код Python и писать его вам будет очень просто.
  • В основе языка лежат переменные/типы данных, циклы, ветвления, работа со строками и списками.
  • Если вы хотите стать разработчиком, бесплатные курсы вам слабо помогут – нужно идти на платный курс, на котором вам выдадут ментора (личного опытного наставника) и позволят реализовать пару серьезных проектов.
Часто ищут