Питон для начинающих с нуля: изучаем Python дома

Как выучить самому Python или любой другой язык программирования? Такой вопрос возникает у тех, кто впервые решил погрузиться в сферу IT.

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

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

Питон для начинающих с нуля: как выучить дома

Где используется Python и почему

В последние 5 лет Питон непрерывно находится в тройке самых популярных языков программирования. У него есть ряд сильных сторон, которые привлекают разработчиков со всего мира.

К типичным областям использования Python относят:

  • Веб-разработка (сайты любой сложности и функциональности без проблем создаются при помощи данного языка);
  • Работа с базами данных (можно работать как с «встроенной» sqlite3, так и любыми другими – реляционными и нереляционными);
  • Графические приложения (реально не просто писать исполняемые скрипты, но и разрабатывать полноценные графические интерфейсы под свои нужды);
  • Научные задачи (сложные вычисления, машинное обучение, нейронные сети);
  • Сетевое программирование (включает не только взаимодействие с сайтами, но и почтовыми сервисами, JSON-объектами, Интернет-протоколами);
  • Бизнес-приложения и игровая индустрия (ERP-системы, непрерывная разработка и тестирование, простые игры).

Озвученный спектр направлений показывает, что Питон имеет определенные преимущества по сравнению с другими языками, раз он пригоден для такого широкого класса задач.

Основные показаны ниже (рис. 1).

Сильные стороны языка Python
Сильные стороны языка Python

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

Выразительность связана с минимальным количеством кода для достижения результата (некоторые особенности Питона сокращают объем кода чуть ли не до одной строки, если сравнивать с другими языками).

Скрипты на Python’e легко читать: нет лишних символов, нагромождения скобок, дополнительных уточнений.

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

Немаловажно и то, что исходный код Python свободно распространяется. Любая редакция языка доступна каждому как для личных, так и коммерческих нужд.

Кроссплатформенность в дополнение ко всему гарантирует достижение идентичных результатов что на Windows, Linux, MacOS, так и на мобильных системах.

Python – объектно-ориентированный высокоуровневый интерпретируемый язык с динамической типизацией и автоматическим управлением памятью.

Объектность позволяет представлять сущности реального мира, что упрощает понимание. Высокоуровневость подразумевает наличие абстракций. Интерпретируемость позволяет исполнять программу на лету.

Динамическая типизация задает тип переменной в момент присваивания. Встроенное управление памятью избавляет от проблем с переполнением кеша и зависаний.

Отметим, также, ключевые плюсы и минуса Питона (таблица 1).

ПлюсыМинусы
Легко изучать, писать и читать кодОтносительно медленный
Интерпретируемый (исполняет код на лету)Не всегда эффективно расходует память
Динамически типизированныйОграничен в мобильной разработке
С открытым исходным кодомПри исполнении могут возникать ошибки, что требует тщательного тестирования
Имеет широкую поддержку 
Таблица 1 – Сильные и слабые стороны Python’a

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

Чтобы начать программировать на Питоне, требуется совершить 2 шага:

  1. Установить последний релиз Python (скачивается с официального сайта https://www.python.org/downloads/);
  2. Загрузить программу для разработки (для новичков лучше всего подойдет PyCharm версии Community – https://www.jetbrains.com/ru-ru/pycharm/download/).

В нашем бесплатном руководстве по Python мы будем пользоваться только этим функционалом. Его достаточно, чтобы самому дома с нуля разобраться в Питоне.

Чтобы создать свой первый проект запускаем PyCharm и выбираем меню File -> New Project. Проверяем, чтобы в поле Base Interpreter стояла самая новая версия Питона.

Python реализован Гвидо ван Россумом в 1991 году. Несколько раз Питон признавался языком года (даже в 2020 году). Сегодня он применяется не только в среде средних и мелких разработчиков, но и в таких мировых компаниях как Google, Instagram, Facebook. Название языка происходит не от змеи, как часто думают новички, а от британского шоу «Летающий цирк Монти Пайтона».

Теперь в папке проекта можно создать файл с расширением «.py», в котором и будет писаться код. Чтобы запустить скрипт, нажимаем либо зеленую кнопку «Run», либо выбираем ее же через правую кнопку мыши. Внизу PyCharm при этом откроется окно консоли, отражающее итог и ход работы программы.

Таким образом, схема работы достаточно проста: пишем код, запускаем его, смотрим в терминал результат.

Чтобы проверить, что все установлено успешно и вы не напутали ничего в настройках, идем в панель терминала (внизу) и пишем там команду «python -V». Она отобразит версию Python, которая была проинсталлирована на компьютер.

В случае, если операционная система отличается от Windows, то команда будет выглядеть так: «python3 -V» (это связано с тем, что в UNIX-подобных ядрах по умолчанию включена более старая версия языка – 2.7. Так как она больше не поддерживается, рекомендуется работать с третьей – 3.9 или выше).

Начало работы в Питоне

Первое, что делают при изучении любого языка программирования, – вывод в консоль популярного сообщения «Hello world». Немного поменяем вывод, и в пустом файле скрипта напишем следующую команду:

-
print('Начинаем программировать')
-

Print – встроенная в Python функция, которая выводит на печать переданное в нее сообщение. Запуск скрипта отобразит в терминале соответствующую фразу.

Еще одна полезная команда – input. Она позволяет как бы общаться с пользователем при помощи консоли. Исполним следующий код:

-
print('Познакомимся?')
input('Как вас зовут, будущий мастер? ')
input('А сколько вам лет?')
print('Рад знакомству!')
-

Функция input приостанавливает исполнение скрипта до тех пор, пока пользователь не введет свой ответ. Сначала в консоли потребуется представиться, а потом передать свой возраст. И лишь потом в терминале отобразится сообщение: «Рад знакомству!».

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

Обсудим базовый синтаксис языка Python:

  1. Любая часть кода отделяется от предыдущей переводом на новую строку (не нужно никаких точек с запятой в конце);
  2. Отступы внутри блоков кода (о них пойдет речь дальше) задаются 4-мя пробелами;
  3. Создаваемые функции и объекты отделяются друг от друга двумя пустыми строчками.

Даже если вы и забудете о сказанном, PyCharm вам напомнит: он подчеркнет синтаксические ошибки, даст подсказки по используемым функциям. Это не просто удобно, но и экономит массу времени.

Каждый символ в коде Python является существенным.

Гвидо ван Россум (https://blog.dropbox.com/topics/work-culture/-the-mind-at-work—guido-van-rossum-on-how-python-makes-thinking)

Данная фраза от создателя языка свидетельствует о том, что Питон в своем синтаксисе максимально прозрачен.

Переменные в Python

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

Названия переменных в Python задаются при помощи змеиной нотации, «snake case» (кто бы сомневался). Они пишутся маленькими буквами, а составные (из нескольких слов) отделяются друг от друга нижним подчеркиванием. Важно давать им осмысленные имена (это существенно упростит ориентирование в коде через некоторое время).

Пример плохих или неверных наименований:

  • abswqw – не понятно, какой смысл у данной переменной;
  • 12Q – имена не могут начинаться с цифры;
  • myname – два слова, не отделенные нижним подчеркиванием;
  • nomer_telefona – не нужно транслита, следует использовать английские слова, чтобы ваш код понял программист из любой точки планеты.

Правильные переменные:

  • name – понятно и отражает суть;
  • birth_year – используем змеиную нотацию.

Реализуем простую задачу для новичков на Питоне, которая иногда встречается на собеседованиях!

Получим от пользователя следующие сведения: его имя и страну, в которой бы он хотел побывать. Выведем на печать сообщение: «Доброго дня, {ИМЯ}. {СТРАНА} – интересная страна!». А после этого продемонстрируем пользователю еще одну фразу: «Было приятно с вами поболтать, {ИМЯ}».

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

Чтобы передать в функцию print переменную вместе с текстом, удобно пользоваться так называемыми f-строками. Синтаксис следующий: print(f’Вы передали переменную {variable}’).

-
user_name = input('Каково ваше имя? ')
country_to_visit = input('В какой стране вы бы хотели побывать? ')
print(f'Доброго дня, {user_name}. {country_to_visit} – интересная страна!')
print(f'Было приятно с вами поболтать, {user_name}')
- 

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

Числа в Питоне и операции с ними

Далее поговорим о типах данных. Начнем с чисел. В этом курсе мы затронем два их типа: целые и числа с плавающей точкой. Из названия понятно, что они подразумевают. Есть и другие: комплексные, десятичные, дробные (в Питоне они различаются).

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

-
x = 8
y = 5
z = 3.56
print(x + y)
print(x - y)
print(x * y)
print(x / y)
print(x ** y)
print(x // y)
print(x % y)
print(x + z)
-

Результат работы скрипта:

13
3
40
1.6
32768
1
3
11.56

Мы создали 3 переменные: две в виде целых чисел и одну как число с плавающей точкой. При делении любых значений всегда получается число с плавающей точкой (даже если разделить 10 на 5, то получим 2.0).

Целочисленное деление обозначается как «//». Оно отбрасывает остаток. Деление по модулю подразумевает отображение только остатка и обозначается «%». Возведение в степень записывается двумя звездочками.

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

  • ­­float – приводит число к типу с плавающей точкой;
  • int – преобразует число в целое (отбрасывает все числа после запятой);
  • type – показывает тип переменной.
-
x = -14
y = 2.981
print(int(y))
print(float(x))
print(type(x))
print(type(y))
-

Результат работы скрипта:

2
-14.0
<class 'int'>
<class 'float'>

При помощи type мы убедились, что первое число – целое, а второе – с плавающей точкой. А две другие функции позволили преобразовать данные к нужному типу.

Строки (тип данных string)

Строка – еще один тип данных в языке Python. Они записываются в одинарных или двойных кавычках. В нашем бесплатном гайде рассмотрим следующие операции с ними:

  • Конкатенация (сложение);
  • Дублирование (умножение);
  • Доступ по индексу;
  • Определение длины.

Конкатенация подразумевает объединение строк. При помощи же знака умножения можно строку продублировать несколько раз.

-
day = 'Wednesday'
weather = 'sunny'
print(day + weather)
print(day * 3)
day += day
print(day)
-

Результат работы скрипта:

Wednesdaysunny
WednesdayWednesdayWednesday
WednesdayWednesday

Операция «day += day» делает следующее: берет старую переменную, добавляет к ней некоторое значение (в нашем случае – ее же саму) и записывает полученный результат под тем же именем. Данная операция часто используется с числами (для умножения, сложение, деления и т.п.).

Строка является перебираемым (итерируемым) объектом. К каждому отдельному ее элементу можно получить доступ. Для этого используются индексы. Индекс первого элемента равен нулю (а остальные – по возрастанию). Можно пойти с конца: тогда последний элемент имеет индекс «-1», а оставшиеся – по убыванию.

Более того, с помощью индексов можно делать срезы: брать некоторую часть строки. Также, предусмотрен шаг среза (по умолчанию равен единице).

Например, нам требуется взять строку начиная с 3-го элемента и заканчивая 15-ым с шагом 2. Это значит следующее: делаем срез с 3-го элемента по 16-ый (он не включается), а из этого промежутка берем не каждый символ, а только четные.

-
quote = 'Начинаем программировать простые задачи на Питоне для новичков'
print(quote[0])
print(quote[5])
print(quote[-3])
print(quote[1:7])
print(quote[:5])
print(quote[3:16:2])
print(quote[::-1])
-

Результат работы скрипта:

Н
а
к
ачинае
Начин
иампорм
вокчивон ялд енотиП ан ичадаз еытсорп ьтавориммаргорп меаничаН

Запись quote[:5] подразумевает срез от начала строки до 5-го элемента (не включая его). Инструкция quote[::-1] говорит о срезе от начала до конца строки, с шагом -1, т.е. в обратном направлении. Это самый простой способ развернуть написанную фразу.

Так как к символам строки можно обращаться по индексу, то у нее есть некоторая длина. Узнать ее просто – применяем функцию len.

-
quote = 'Список команд для новичков'
print(len(quote))
-

Результат работы скрипта:

26

Можете проверить сами, что в данной строке 26 символов (с учетом пробелов).

Булевы операции

Булев тип данных и операции сравнения используются в любом языке программирования. Здесь мы работаем с двумя значениями: истина (True) или ложь (False). Сравнение переменных осуществляется следующими операторами:

– «==» - равны ли переменные;
– «!=» - не равны ли значения;
– «>», «<», «>=», «<=» – больше, меньше, больше-равно или меньше-равно.
-
x = 11
y = 12
z = 11
print(x == y)
print(x == z)
print(x >= y)
print(z <= y)
print(x != y)
-

Результат работы скрипта:

False
True
False
True
True

С булевым типом данных тесно связаны логические операторы:

  • AND (логическое И) – проверяет верность обеих частей выражения;
  • OR (логическое ИЛИ) – проверяет верность одной из частей выражения;
  • NOT (логическое НЕ) – обращает значение, возвращает обратную логическую величину.

Проще всего понять их на основании следующей таблицы (табл. 2).

Первое выражениеВторое выражениеANDOR
TrueTrueTrueTrue
TrueFalseFalseTrue
FalseTrueFalseTrue
FalseFalseFalseFalse
Таблица 2 – Логические операторы в Python

Условные выражения

Работа с логическими операторами и операциями напрямую связана с условными выражениями. Бывают ситуации, когда код программы начинает ветвиться в зависимости от предыдущего результата.

Например, на сайт заходит пользователь: если ему больше 18 лет, то ему показываются все темы, а если меньше – то только некоторые. Для таких случаев используется инструкция «if…elif…else». Она может состоять из 1, 2 или более вариантов ветвления.

Рассмотрим на практике.

-
# Одиночное условие
age = -5
if age < 0 or age > 140:
    print('Такого возраста не бывает')
-

Результат работы скрипта:

Такого возраста не бывает

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

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

-
# Многоуровневое условие
age = 'Tom'
if type(age) is not int:
    if type(age) is float:
        print('Введите целое число')
    elif type(age) is str:
        print('Не нужно строк!')
    else:
        print('Требуется только целочисленное единичное значение')
elif age < 0 or age > 140:
    print('Рамки допустимого возраста 1-139 лет')
-

Результат работы скрипта:

Не нужно строк!

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

Списки, кортежи, множества и словари

Списки, кортежи, множества и словари – еще 4 типа данных в Питоне, включающие в себя несколько значений и являющиеся итерируемыми (перебираемыми, как строки).

Особенности показаны в таблице 3.

Список (list)Кортеж (tuple)Множество (set)Словарь (dict)
ИзменяемыйНеизменяемыйИзменяемоеИзменяемый
Значения могут дублироватьсяЗначения могут дублироватьсяЗначения не могут дублироватьсяКлючи не могут дублироваться
Доступ по индексу возможенДоступ по индексу возможенДоступ по индексу невозможенЕсть доступ к ключам и значениям
Таблица 3 – Коллекции данных в Python

Список – последовательность произвольных элементов, разделенных запятой. Обозначается квадратными скобками. Можно доставать отдельные составляющие через индекс, добавить в начало списка или конец те или иные значения, удалить элементы, узнать длину, отсортировать.

Рассмотрим часть функционала.

numbers = [3, -7, 32, 11.4, 9]
# Добавляем элемент в конец списка
numbers.append(101)
print(numbers)
# Добавляем элемент в начало списка
numbers.insert(0, -46)
print(numbers)
# Удаляем последний элемент
numbers.pop()
print(numbers)
# Разворачиваем список
numbers.reverse()
print(numbers)
# Удаляем первый элемент со значением -7
numbers.remove(-7)
print(numbers)
# Сортируем список по возрастанию
numbers.sort()
print(numbers)
-

Результат работы скрипта:

[3, -7, 32, 11.4, 9, 101]
[-46, 3, -7, 32, 11.4, 9, 101]
[-46, 3, -7, 32, 11.4, 9]
[9, 11.4, 32, -7, 3, -46]
[9, 11.4, 32, 3, -46]
[-46, 3, 9, 11.4, 32]

Когда необходимо запретить изменение коллекции, ее удобно представлять в виде кортежа. Более того, он занимает меньшее количество в памяти. Записывается в круглых скобках.

На их основании также возможны срезы, доступ по индексу, нахождение максимума или минимума (если элементы представлены числами), поиск количества вхождений значений.

-
numbers = (2, 2, 6, -1, 2, 11)
# Узнаем длину кортежа
print(len(numbers))
# Ищем максимальное число
print(max(numbers))
# Подсчитываем сумму всех элементов
print(sum(numbers))
# Выясняем, сколько раз в кортеже встречается двойка
print(numbers.count(2))
-

Результат работы скрипта:

6
11
22
3

Множества хороши в ситуациях, когда нужна гарантия уникальности всех элементов. Задаются фигурными скобками. При добавлении дубликата размер сета никак не меняется. Важно и то, что порядок объектов внутри множества не гарантирован, что исключает доступ по индексу.

-
names = {'Игорь', 'Пётр', 'Николай', 'Семён'}
# Добавляем имена в множество
names.add('Игорь')
names.add('Матвей')
names.add('Дмитрий')
print(names)
# Удаляем имя из множества
names.discard('Николай')
print(names)
# Очищаем множество
names.clear()
print(names)
-

Результат работы скрипта:

{'Пётр', 'Матвей', 'Дмитрий', 'Семён', 'Игорь', 'Николай'}
{'Пётр', 'Матвей', 'Дмитрий', 'Семён', 'Игорь'}
set()

Словарь – особый тип коллекций. Все его элементы состоят из пар «ключ: значение». Ключ должен быть уникальным, а значения могут повторяться. Обозначается фигурными скобками.

Рассмотрим некоторые операции со словарями.

-
student = {
    'name': 'Федор',
    'age': 28,
    'is_present_today': True,
    'hobbies': ['music', 'chess', 'literature']
}
# Выясняем хобби студента
print(student['hobbies'])
# Узнаем все ключи
print(student.keys())
# Узнаем все значения
print(student.values())
# Добавляем новую характеристику
student['avg_mark'] = 4.2
print(student)
# Узнаем рост студента, а если нет такого ключа, то возвращаем 0
print(student.get('height', 0))
-

Результат работы скрипта:

['music', 'chess', 'literature']
dict_keys(['name', 'age', 'is_present_today', 'hobbies'])
dict_values(['Федор', 28, True, ['music', 'chess', 'literature']])
{'name': 'Федор', 'age': 28, 'is_present_today': True, 'hobbies': ['music', 'chess', 'literature'], 'avg_mark': 4.2}
0

Таким образом, в зависимости от ситуации применяется тот или иной тип коллекций. Чаще всего это списки и словари.

Циклы for, while в Питоне

Выше упоминалось, что ряд объектов Питона является итерируемым. Это значит, что элементы этой сущности можно перебирать. Для этого в том числе нужны циклы (особенно for).

Конструкция цикла for представлена следующим образом:

for elem in sequence:
    что-то выполняем…

Либо:

for index in range(num):
    что-то выполняем…

Другими словами, мы можем проходиться по каждому элементу последовательности либо напрямую, либо при помощи функции range и индексов.

Для понимания рассмотрим примеры.

-
planets = ['Земля', 'Марс', 'Меркурий', 'Венера', 'Юпитер']
for planet in planets:
    print(planet)
-

Результат работы скрипта:

Земля
Марс
Меркурий
Венера
Юпитер

При помощи цикла for мы вывели на печать все имеющиеся в списке планеты. Такого же результата можно добиться через индексы (на основании длины списка). Функция range генерирует целые числа в заданном диапазоне. Так как всего у нас 5 планет, то в нее можно передать параметр 5. С другой стороны, для этого также подойдет длина списка.

-
planets = ['Земля', 'Марс', 'Меркурий', 'Венера', 'Юпитер']
for index in range(5):
    print(planets[index])
for index in range(len(planets)):
    print(planets[index])
-

Результат работы скрипта (нижеследующее выведется 2 раза):

Земля
Марс
Меркурий
Венера
Юпитер

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

Реализуем следующую задумку: выведем все числа от 50 до 100 включительно, которые делятся на 7, но не делятся на 2.

-
start_number = 50
while start_number <= 100:
    if start_number % 7 == 0 and start_number % 2 != 0:
        print(start_number)
    start_number += 1
-

Результат работы скрипта:

63
77
91

Всего таких числа 3. Важно не забыть на каждой итерации увеличивать исходное число, иначе оно никогда не станет равным 100.

Функции

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

Чтобы создать функцию, перед ее именем следует написать ключевое слово def, а также обозначить параметры, если таковые есть. Выше мы уже встречали некоторые из них, которые встроены в Python (sum, print, input).

Ничто не мешает создать свои. Важно учесть и то, что функция всегда что-то возвращает (после ключевого слова return), хоть return и не обязателен (тогда вернется None, т.е. «ничто»).

Структура функции следующая:

def foo(param1, param2):
    что-то делаем…
    return значение

Создадим функцию, которая в зависимости от возраста пользователя будет выводить его статус. Если ему меньше 10 лет – то вернем сообщение «Ребенок», если от 10 до 16 – «Подросток», если от 16 до 20 – «Юноша», если от 20 до 35 – «Молодой человек», если от 35 до 45 – «Мужчина», если от 45 до 55 – «Солидный мужчина», если от 55 до 70 – «Зрелый ум», если от 70 до 120 – «Познавший смыслы». В любом другом случае предупредим пользователя: «Такого возраста не бывает».

-
def status(age):
    if type(age) is int:
        if 0 < age < 10:
            return 'Ребенок'
        elif 10 <= age < 16:
            return 'Подросток'
        elif 16 <= age < 20:
            return 'Юноша'
        elif 20 <= age < 35:
            return 'Молодой человек'
        elif 35 <= age < 45:
            return 'Мужчина'
        elif 45 <= age < 55:
            return 'Солидный мужчина'
        elif 55 <= age < 70:
            return 'Зрелый ум'
        elif 70 <= age < 120:
            return 'Познавший смыслы'
        else:
            return 'Такого возраста не бывает'
    return 'Такого возраста не бывает'


print(status(6))
print(status(34))
print(status(61))
print(status(-3))
print(status('Николай'))
-

Результат работы скрипта:

Ребенок
Молодой человек
Зрелый ум
Такого возраста не бывает
Такого возраста не бывает

Теперь в нашей программе можно использовать данную функцию множество раз с разными аргументами.

Модули, библиотеки, import

Язык Python хорош тем, что в него встроено большое количество модулей и библиотек по умолчанию. Более того, их можно дополнительно установить из официального репозитория при помощи команды «pip install название_модуля» в терминале проекта.

Модули (один файл) и библиотеки (несколько файлов с обязательным наличием документа __init__.py) расширяют возможности программистов и упрощают работу. Не нужно создавать велосипед заново, так как его уже кто-то сделал ранее для вас. Нужно лишь им воспользоваться, чтобы добраться из точки А в точку Б.

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

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

Перечислим все способы абсолютного импортирования в Питоне:

Общий импорт

-
import random
print(random.randint(2, 12))
-

Результат работы скрипта:

7

Сначала указываем модуль, а потом функцию через точку.

Импорт всех объектов (не рекомендуется, но не запрещен)

-
from random import *
print(randint(2, 12))
-

Результат работы скрипта:

5

Модуль указывать не требуется.

Импорт конкретной функции

-
from random import randint
print(randint(2, 12))
-

Результат работы скрипта:

11

Модуль указывать не надо, но остальные его функции и переменные недоступны.

Импорт функции с переименованием

-
from random import randint as r
print(r(2, 12))
-

Результат работы скрипта:

10

Импорт модуля с переименованием

-
import random as rnd
print(rnd.randint(2, 12))
-

Результат работы скрипта:

3

Работа с файлами

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

Попробуем сгенерировать 10 случайных целых чисел от 1 до 100 и записать их в текстовый файл «random.txt», а затем выведем их на печать в консоль из этого документа.

Нам понадобится контекстный менеджер with и функция open, а также знакомая функция print, которая умеет заносить данные в файл.

Познакомимся с двумя режимами работы open: «r» — чтение, «w» – запись.

-
from random import randint

# Создаем файл со случайными числами
with open('random.txt', 'w', encoding='utf-8') as doc:
    for number in range(10):
        print(randint(1, 100), file=doc)

# Читаем созданный файл и выводим на печать все сгенерированные числа
with open('random.txt', 'r', encoding='utf-8') as doc:
    for line in doc.readlines():
        print(line.strip())
-
37
83
96
45
93
12
67
40
41
75

Итак, контекстный менеджер with автоматически закрывает файл после своей работы (чтобы он не оставался в памяти).

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

Функция print может принимать дополнительный аргумент file, в котором указывается файл на запись.

Метод readlines считывает содержимое документа и формирует из его строк список, по которому мы проходимся. Так как в текстовом файле у нас есть переносы (они появились благодаря функции print, которая при каждом вызове начинает вывод с новой строки), их удобнее удалить с помощью метода strip, примененного к каждой строке.

Изучаем Python: куда дальше?

Чтобы быстро усвоить азы Питона, предоставленного в уроке материала достаточно. Конечно, этого мало, дабы стать специалистом. Поэтому придется самостоятельно дома или при помощи дополнительных курсов углублять знания. Выбор за вами, но некоторые рекомендации мы дадим.

Какие темы освоить в первую очередь? Приводим список тем и команд для новичков:

  • типы данных в Python;
  • необязательные и ключевые аргументы функций (*args, **kwargs), лямбда-выражения (lambda);
  • объекты и классы, инициализация;
  • основные встроенные модули (functools, math, string, sys, os, collections, time);
  • генераторы и итераторы (yield, iter);
  • работа с разными файлами (csv, изображения, текст);
  • исключения и ошибки (exceptions);
  • списковые включения (list comprehension);
  • работа с сетью (requests, BeautifulSoup).

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

Потом стоит переходить к серьезным трудам (типа М. Лутца), ознакомлению с популярными фреймворками и библиотеками (Django, flask, pandas).

Ответы на вопросы читателей

Насколько сложно выучить Python?
Азы Питона изучаются достаточно просто. Чтобы стать экспертом и высококлассным специалистом потребуется практика и решение реальных задач. Быстро выучить можно, было бы желание.
Какие программы можно создавать, овладев Питоном?
Перечень программ органичен лишь фантазией. Разработчики создают порталы и многофункциональные сайты, парсеры, менеджеры баз данных, системы управления ресурсами, чат-боты, программные интерфейсы, сервисы анализа данных, графические оболочки.
Сколько времени потребуется на изучение Питона?
Стандартных временных рамок не существует. Однако уже через 1-2 месяца при интенсивной самостоятельной работе с языком можно создавать простые парсеры, небольшие игры, автоматизаторы рутинных задач. А вообще, есть правило 10 тыс. часов – именно столько времени практики потребуется, чтобы посчитать себя специалистом хорошего уровня.
Есть ли слабые стороны у Питона?
У любого языка программирования они имеются. Во-первых, скорость работы несколько ниже, чем у компилируемых языков (С++, Java), но ее обычно хватает. Во-вторых, работа с 3d-графикой ограничена. В-третьих, отсутствует проверка типа переменной в момент компиляции.
Какая зарплата у Python-разработчика начинающего уровня?
В зависимости от региона она варьируется, но даже Junior-разработчик вполне может рассчитывать на 30-50 тыс. руб. в первые месяцы работы. По мере роста количества навыков лимиты повышаются в разы, а то и десятки раз.
Как лучше учить Python?
В наше время методик обучения бесчисленное количество: видеокурсы, книги, игровые платформы, буткампы и пр. Поэтому можно выбрать тот способ, что подходит именно вам. Главное помнить: постоянная практика закрепляет пройденный материал. Простая зубрежка материала не даст никаких видимых результатов.
Где можно посмотреть задачи для новичков, простые проекты?
Чтобы попрактиковаться в навыках, необходимо решать разные задачи и сравнивать результаты с другими программистами. Для этого подойдут следующие ресурсы: https://www.codingame.com/, https://www.codewars.com/, https://www.hackerrank.com/. Здесь имеются задания для специалистов любого уровня.

Дополнительные источники (книги и сайты)

  1. A byte of Python («Укус питона»). URL: https://python.swaroopch.com/
  2. Pycharm – среда разработки. URL: https://www.jetbrains.com/ru-ru/pycharm/
  3. Гэддис Тони. Начинаем программировать на Python – 2019, 768 c.
  4. Дауни Аллен Б. Основы Python. Научитесь думать как программист. – 2021, 304 c.
  5. Мюллер Дж. П. Python для чайников. – 2019, 416 с.
  6. Официальный сайт Python. URL: https://www.python.org/
  7. Портал программистов: ответы на любые вопросы. URL: https://ru.stackoverflow.com/

Подписывайтесь на наш канал в Telegram, чтобы получать свежие статьи своевременно!
Лучший способ отблагодарить нас — поделиться статьей с друзьями:
Влад Шляховой — автор Ratenger.com

Издатель и главный редактор Ratenger.com.

Оцените автора
Поделиться мнением

  1. Vog@gmail.com

    Лучший мануал что я читал. Автору респект

    Ответить
  2. Александр

    А разве 3 пункт в таблице №2 верен? По первому выражению же проверка, тогда в графе OR будет FALSE, а не TRUE

    Ответить
  3. Егор

    Нужны с чего начать изучение python с нуля самостоятельно

    Ответить
  4. terens

    Как чудесно , когда человек владеет языком , способностью формулировать и знанием предмета! Лучший мануал , согласен!

    Ответить