Что такое Python
Это высокоуровневый язык, отличающийся от того же Java простотой синтаксиса. Осваивать его легко благодаря схожести с обычным английским. Код понимает даже обычный пользователь, не владеющий искусством программирования. Вложенность обозначается отступами, что упрощает читаемость и обучение для новичков.
Есть и другие преимущества:
- Типы переменных назначаются автоматически. Операнды разных типов в одной операции «самостоятельно» приводятся к нужному согласно встроенным правилам.
- Функции автоматически преобразуются в список, если просто указать их через запятую. Не нужно выделять память, передавать указатели.
- Память на выполнение операций выделяется автоматически. Если выявляются объекты, на которые нет ссылок, они удаляются «сборщиком мусора».
- Типы данных привязаны к значениям, что позволяет обходиться без их явного определения и упрощает повторное присваивание переменной.
Написанный код не нужно компилировать, он начинает работать сразу после запуска. Благодаря этому легко проверять каждую корректировку программы, которых набираются десятки во время отладки приложения. Такие особенности привели к тому, что в прошлом году Python оказался на 10% популярнее вездесущего Java.
Фичи Python
Простота обучения — у Python есть несколько ключевых слов, простая структура и четко определенный синтаксис. Это позволяет студенту быстро забрать язык.
-
Легко читаемый
— код Python более четко определен и видим для глаз.
-
Легкий в обслуживании
— исходный код Python довольно прост в обслуживании.
-
Широкая стандартная библиотека
— основная часть библиотеки Python очень портативна и кросс-платформенная совместима с UNIX, Windows и Macintosh.
-
Интерактивный режим
— Python поддерживает интерактивный режим, который позволяет интерактивно тестировать и отлаживать фрагменты кода.
-
Портируемый
— Python может работать на самых разных аппаратных платформах и иметь один и тот же интерфейс на всех платформах.
-
Расширяемый
— вы можете добавить модули низкого уровня в интерпретатор Python. Эти модули позволяют программистам добавлять или настраивать свои инструменты для повышения эффективности.
-
Базы данных
— Python предоставляет интерфейсы для всех основных коммерческих баз данных.
-
Программирование GUI
— Python поддерживает графические приложения, которые могут быть созданы и перенесены на многие системные вызовы, библиотеки и системы Windows, такие как Windows MFC, Macintosh и X Window системы Unix.
-
Масштабируемость
— Python обеспечивает лучшую структуру и поддержку больших программ, чем оболочки.
Помимо вышеупомянутых функций, у Python есть большой список хороших функций. A, немногие перечислены ниже —
- Он поддерживает функциональные и структурированные методы программирования, а также ООП.
- Он может использоваться как язык сценариев или может быть скомпилирован в байт-код для создания больших приложений.
- Он обеспечивает очень высокоуровневые динамические типы данных и поддерживает динамическую проверку типов.
- Он поддерживает автоматическую сборку мусора.
- Его можно легко интегрировать с C, C ++, COM, ActiveX, CORBA и Java.
6 преимуществ Python
- Легко читаемый код — синтаксис языка построен таким образом, что он не позволяет писать «некрасивый» и неструктурированный код. Программа на Python выглядит как английский текст.
- Переносимость языка — Python является интерпретируемым языком и работает под виртуальной машиной, а это означает, что его можно запускать на разных платформах: MacOS, Linux, Windows, Android, iOS и прочих.
- Ускоренный цикл разработки — языку Python, в отличие от компилируемых языков программирования, таких как С, С++, С#, не нужно время на сборку и компиляцию программы, поэтому программа на Python быстро запускается и сразу показывает результат.
- Множество пакетов — язык имеет большое количество готовых решений и пакетов.
- Поддержка всех стилей программирования — императивный (приказной), объектный, функциональный.
- Низкий порог входа — за несколько дней можно начать писать свои первые программы.
Объектно-реляционное отображение (ORM)
Если вы работаете с большим количеством баз данных, то вам определенно захочется познакомиться с объектно-реляционными мапперами (ORM). ORM позволяет вам работать с базой данных, без непосредственного использования SQL. Некоторые разработчики называют его более питонным, так как это ORM не является смесью SQL и Python. Самый популярный ORM в Python – это SQLAlchemy. Основное преимущество в использовании SQLAlchemy это то, что вы можете вписать код вашей базы данных один раз, и затем, если бекенд меняется, вам не нужно менять ваши запросы. Единственное, что вам нужно будет изменить – это строку соединения. Я использовал SQLAlchemy для перемещения таблиц из одного бекенда в другой, сохраняя возможность использовать тот же код в обоих концах. Также существуют другие представители ORM, например SQLObject и peewee. Сначала я попробовал использовать SQLObject, но он не поддерживает композитные ключи (на то время, по крайней мере), так что я переключился на SQLAlchemy. В принципе, я об этом ни разу не пожалел. Пакет peewee это маленький, легкий ORM, но все еще не такой гибкий как SQLAlchemy. Я настоятельно рекомендую ознакомиться с различными способами реализации данных ORM, потому, что то только так вы поймете, какой из них подойдет вам лучше.
Python: Data Science
Наверняка кто-то уже написал статью о причинах популярности Python среди дата-сайентистов. Эти причины нам, по правде сказать, не слишком важны, просто запомним, что на данный момент Python главный язык в науке о данных.
Если вы планируете карьеру в этом направлении, то в дополнение к основным вебинарам прочитайте статьи:
- Карта развития дата-сайентиста: с чего начать и куда идти.
- Как изучить Data Science по-настоящему (а не развлекаться трюками).
- Семь базовых понятий из статистики для Data Science.
А также статью про математику для джунов.
Изображение: Public Domain
Первые модели
Одна из сильных сторон Python — это то, что настоящую модель машинного обучения можно закодить буквально в пару десятков строк, а то и меньше. И, разумеется, чтобы написать эти строки, глубокое знание Python не требуется. У дата-сайентистов его и нет.
- Галопом по питону: языковой минимум для начинающего дата-сайентиста.
- Первичное преобразование данных: использование библиотеки Pandas.
- Ваша первая модель машинного обучения.
Делаем умного чат-бота
Николай Герасименко, ведущий исследователь данных в «Сбере», научит вас делать умных чат-ботов.
- В первый день познакомимся с архитектурой будущего чат-бота, узнаем, что такое NLU, а также, как обычно, освежим в памяти основы Python.
- Во второй день научим чат-бота понимать текст. Для этого подготовим данные, превратим слова в числа, обучим модель и встроим её в чат-бота.
- На третий день создадим Telegram-бота и запустим наконец-то наше приложение. Восстание машин уже близко!
Интенсив «Чат-бот с искусственным интеллектом на Python»: первый день, второй день, третий день.
Пишем зрячую нейросеть
Уже знакомый нам Никита Левашов покажет, как сделать приложение с нейронкой внутри.
- Первый день: основы Python для работы с нейросетью, работа в Google Colab, что такое компьютерное зрение.
- Второй день: обучение модели распознаванию объектов.
- Третий день: написание приложения, подключение его к стриму.
Python: основы
С помощью этих материалов вы изучите Python на базовом уровне: установка интерпретатора, синтаксис языка, импорт библиотек, основные типы данных и операции над ними. Кстати, этого вполне достаточно, чтобы создавать довольно сложные и полезные программы.
Установка
Программировать на Python можно на своём компьютере, скачав и установив дистрибутив (рекомендуем Anaconda или PyCharm), либо в браузере, с помощью специальных сервисов (например, Google Colab).
- Как новичку установить Python на компьютер
- Как запустить Python на Linux, Windows, macOS
- Как использовать сервис Google Colab
Первые шаги
Путь питониста начинается с основных операторов, базового синтаксиса языка и установки библиотек.
- График курса доллара в Anaconda. Установим дистрибутив Anaconda, изучим синтаксис и нарисуем график курса доллара.
- Облако слов на Python. Нарисуем облако самых частотных слов со страницы «Википедии» прямо в браузере с помощью Google Colab.
- Устанавливаем библиотеку в Python. Основные способы: ручная установка, с помощью easy install и самый популярный — c помощью утилиты pip.
- Вебинар «Рисуем дерево с помощью Python». Изучим чуть больше команд и функций, разберёмся с циклами и условиями, импортируем библиотеку для рисования.
Инструменты и фишки
Хороший программист — любопытный программист. Знание фишек и неочевидных нюансов языка — один из признаков хорошего программиста, пусть и начинающего.
- 11 вопросов про списки. Если на собеседовании спросят про эту структуру данных, вы будете знать, что отвечать.
- Форматированные строки на примерах. Разбираем этот удобный и наглядный способ вывода строк.
- Генераторы в Python: что это и зачем они нужны. Одна из характерных фичей Python — создание сложных объектов буквально в одну-две строки. Генераторы нужны в том числе и для этого.
- 15 коротких программ на Python. Короткие и понятные программы позволяют лучше понять язык.
Продвинутые возможности
Python снисходителен к новичкам — потому что позволяет решать какие-то задачи достаточно небрежно, жертвуя чистотой кода в обмен на скорость разработки. Но это не значит, что правильного и красивого решения не существует.
- Правильное объединение строк в Python. Да, можно просто объединять строки с помощью знака +, но это не лучший способ.
- Декораторы: что отвечать на собеседовании. Функция, которая изменяет (декорирует) другую функцию. Звучит перспективно!
- Случайные числа в Python. Случайностей не бывает, особенно в Python. Или…
- Рефакторинг кода в Python. Большая часть работы программиста — не написание нового кода, а чтение и переделка (рефакторинг) старого. Будем же делать это правильно!
Булевы операции
Булев тип данных и операции сравнения используются в любом языке программирования. Здесь мы работаем с двумя значениями: истина (True) или ложь (False). Сравнение переменных осуществляется следующими операторами:
Результат работы скрипта:
С булевым типом данных тесно связаны логические операторы:
- AND (логическое И) – проверяет верность обеих частей выражения;
- OR (логическое ИЛИ) – проверяет верность одной из частей выражения;
- NOT (логическое НЕ) – обращает значение, возвращает обратную логическую величину.
Проще всего понять их на основании следующей таблицы (табл. 2).
Первое выражение | Второе выражение | AND | OR |
True | True | True | True |
True | False | False | True |
False | True | False | True |
False | False | False | False |
Таблица 2 – Логические операторы в Python
Особенности «Пайтона»
Многие специалисты считают, что «Пайтон» действительно упрощает написание кода, а также увеличивает скорость разработки. Да, можно программировать проще и быстрее, но это стало возможным благодаря следующим особенностям:
динамической типизации. Разработчику нет необходимости указывать тип переменных — язык его сам присвоит, а операнды различных типов, которые участвуют в одной операции, приведутся к нужному типу автоматически, но по определенным правилам;
удобному возврату функцией нескольких значений. Значения разработчик может перечислить через запятую, в результате чего они преобразуются в список, причем автоматически. К примеру, для возврата массива из функции, достаточно просто написать ““. То есть нет необходимости выделять память, передавать указатели в функцию;
автоматическому выделению памяти. Разработчику не надо самому выделять память под что-нибудь. Да, это снижает контроль над программой, однако есть и плюс: разработка реально ускоряется;
сборщику мусора. Когда объект становится бесполезным, то есть на него больше ничего не ссылается, такой объект удаляется сборщиком мусора, причем опять автоматически. То есть сборщик мусора дает возможность оптимально задействовать память, плюс отпадает необходимость вручную удалять бесполезные объекты;
a, b = b, a. Мы только что изменили значения переменных с помощью этой простейшей строки. Что было в а, стало в b и наоборот. Такой способ удобен и позволяет обменивать значения трех, пяти и более переменных;
привязка типа данных. Тип данных в «Питоне» привязан ко значению, а не к переменной. Значение является каким-нибудь объектом с атрибутами, определяющими тип и иные характеристики этого объекта, а переменная является лишь ссылкой на данный объект
Чего позволяет достичь такой подход? Нет необходимости в явном определении типов, что существенно упрощает повторное присваивание значения переменной (что особенно важно, когда тип нового значения отличается от начального);
циклу for. В «Пайтоне» довольно удобно работать со списками, массивами и иными контейнерами
Если надо перебрать все его элементы, то конструкция кодового блока выглядит следующим образом: “” (то есть перебор осуществляется с нуля до последнего элемента; индекс можно обозначить как -1). Когда необходимо, чтобы выполнилось некоторое число циклов, пишут “” (циклический блок станет выполняться со значениями у от 1 до 7);
интерпретируемости. Эта особенность хороша вдвойне: код, который написан, компилировать не надо — вполне достаточно его запустить и получить результат. А еще есть возможность работать интерактивно, получая результат практически после каждой операции.
«Уроки Python с нуля до Junior-разработчика» от Web Developer Blog
Пройти курс
Продолжительность: 12 видеозанятий.
Форма обучения: видеоуроки.
Программа обучения:
- Начальные действия и установка среды разработки.
- Типы данных, переменные.
- Арифметические действия.
- Управляющие конструкции.
- Понятие функций.
- Основные структуры данных
- Кортежи.
- Словари.
- Множества.
- Строковый тип.
- Чтение и запись в файлы.
- Модули
Чему научитесь:
- освоите язык Python на начальном уровне;
- познакомитесь с созданием сайтов;
- научитесь работать с файлами и структурами данных.
- подходит для начинающих;
- свободный график обучения;
- объяснение простым языком.
Списки, кортежи, множества и словари
Списки, кортежи, множества и словари – еще 4 типа данных в Питоне, включающие в себя несколько значений и являющиеся итерируемыми (перебираемыми, как строки).
Особенности показаны в таблице 3.
Список (list) | Кортеж (tuple) | Множество (set) | Словарь (dict) |
Изменяемый | Неизменяемый | Изменяемое | Изменяемый |
Значения могут дублироваться | Значения могут дублироваться | Значения не могут дублироваться | Ключи не могут дублироваться |
Доступ по индексу возможен | Доступ по индексу возможен | Доступ по индексу невозможен | Есть доступ к ключам и значениям |
Таблица 3 – Коллекции данных в Python
Список – последовательность произвольных элементов, разделенных запятой. Обозначается квадратными скобками. Можно доставать отдельные составляющие через индекс, добавить в начало списка или конец те или иные значения, удалить элементы, узнать длину, отсортировать.
Рассмотрим часть функционала.
Результат работы скрипта:
Когда необходимо запретить изменение коллекции, ее удобно представлять в виде кортежа. Более того, он занимает меньшее количество в памяти. Записывается в круглых скобках.
На их основании также возможны срезы, доступ по индексу, нахождение максимума или минимума (если элементы представлены числами), поиск количества вхождений значений.
Результат работы скрипта:
Множества хороши в ситуациях, когда нужна гарантия уникальности всех элементов. Задаются фигурными скобками. При добавлении дубликата размер сета никак не меняется
Важно и то, что порядок объектов внутри множества не гарантирован, что исключает доступ по индексу
Результат работы скрипта:
Словарь – особый тип коллекций. Все его элементы состоят из пар «ключ: значение». Ключ должен быть уникальным, а значения могут повторяться. Обозначается фигурными скобками.
Рассмотрим некоторые операции со словарями.
Результат работы скрипта:
Таким образом, в зависимости от ситуации применяется тот или иной тип коллекций. Чаще всего это списки и словари.
Условный оператор if
Оператор if позволяет изменить порядок выполнения операторов в зависимости от истинности или ложности некоторого условия. Формат оператора может быть записан в двух формах: полной и неполной форме.
if условие: # блок if <операторы>else: # блок else <операторы>
Блок инструкций if будет выполнен, если условие истинно. Если условие ложно, будет выполнен блок инструкций else.
В условном операторе может отсутствовать слово else и последующий блок. Такая инструкция называется неполным ветвлением.
Пример 5. Записать следующее выражение на языке Python.Если a > 0, то b = 1, иначе a = 0.
print («Введите значение a: «) a = int(input())if a > : b = 1 else: b = print(«b = «, b)
Условный оператор elif
if условие_1: # блок if <операторы>elif условие_2: # первый блок elif <операторы>elif условие_3: <операторы>...else # блок else <операторы>
Ключевое слово elifрасшифровывается, как else + if. Это конструкция позволяет реализовать алгоритм выбора необходимого варианта из нескольких альтернативных вариантов. Оператор elif позволяет упростить код. Сделать его легче читаемым и позволяет избежать написание несколько условий if.
Когда исполняется инструкция if-elif-else, в первую очередь проверяется условие_1. Если условие истинно, тогда исполняется блок инструкций if . Следующие условия и операторы пропускаются, и управление переходит к оператору за условным оператором if-elif-else.
Если условие_1 оказывается ложным, тогда управление переходит к следующему условию elif, и проверяется условие_2. Если оно истинно, тогда исполняются инструкции внутри первого блока elif. Последующие инструкции внутри этого блока пропускаются. Этот процесс повторяется, пока не находится условие elif, которое оказывается истинным. Если такого нет, тогда исполняется блок операторов else
Пример.
x = int(input()) y = int(input())if x > and y > print("Первая четверть")elif x > and y < print("Четвертая четверть")elif y > print("Вторая четверть")else: print("Третья четверть")
Словарь: структура данных в виде ключ-значение
Теперь мы знаем, что списки пронумерованы числовыми значениями. Но что, если мы не хотим использовать числа для идентификации элемента? Некоторые виды структур данных могут использовать числа, строки, или другие виды идентификации.
Одним из таких типов является словарь. Словарь это коллекция пар ключ-значение. Вот так это выглядит:
dictionary_example = { "key1": "value1", "key2": "value2", "key3": "value3" }
Ключ указывает на значение. Чтобы получить доступ к какому-либо значению — нам нужно обратиться к его ключу. Делается это следующим образом:
dictionary_tk = { "name": "Leandro", "nickname": "Tk", "nationality": "Brazilian" } print("My name is %s" %(dictionary_tk)) # My name is Leandro print("But you can call me %s" %(dictionary_tk)) # But you can call me Tk print("And by the way I'm %s" %(dictionary_tk)) # And by the way I'm Brazilian
Я создал словарь о себе. Моё имя, никнейм и национальность. Эти атрибуты ключи в словаре.
Похожим образом на то, как мы получаем элемент из списка по его номеру, точно так же мы получаем значения словарей по их ключам.
В примере я написал предложение о себе используя значения, которые хранятся в словаре. Довольно просто, не правда ли?
Ещё одной хорошей особенностью словарей является то, что мы можем использовать что угодно в качестве значения. В том словаре, что я создал, я хочу добавить новый ключ «age»(возраст) и числом мой реальный возраст в качестве значения:
dictionary_tk = { "name": "Leandro", "nickname": "Tk", "nationality": "Brazilian", "age": 24 } print("My name is %s" %(dictionary_tk)) # My name is Leandro print("But you can call me %s" %(dictionary_tk)) # But you can call me Tk print("And by the way I'm %i and %s" %(dictionary_tk, dictionary_tk)) # And by the way I'm Brazilian
Здесь у нас пара из ключа(age) и значения(24). При этом ключ это строка, а значение это число.
Точно также как со списками, давайте научимся добавлять новый элемент в словарь. Ключ указывающий на значение — главная особенность словаря. И это же одна из особенностей при добавлении нового элемента в словарь:
dictionary_tk = { "name": "Leandro", "nickname": "Tk", "nationality": "Brazilian", "age": 24 } dictionary_tk = 24 print(dictionary_tk) # {'nationality': 'Brazilian', 'age': 24, 'nickname': 'Tk', 'name': 'Leandro'}
Нам просто нужно дописать значение для существующего ключа в словаре. Ничего сложного, не так ли?