\ No newline at end of file
diff --git a/base/conditional_comparison/index.html b/base/conditional_comparison/index.html
index bf0fe01..1c856d6 100644
--- a/base/conditional_comparison/index.html
+++ b/base/conditional_comparison/index.html
@@ -1,4 +1,4 @@
- условия и сравнения - python от ods.ai
В прошлых лекциях рассмотрели программы с линейной структурой: сначала выполнялась первая конструкция (например, объявление переменной), затем вторая (преобразование переменной или расчет по формуле), после – третья (print для вывода результатов). Можно сказать, что происходило последовательное исполнение команд, причем каждая инструкция выполнялась обязательно. Но что делать, если хочется опираться на обстоятельства и принимать решения о том, выполнять одну часть кода или другую?
Допустим, по числу x нужно определить его абсолютную величину, то есть модуль. Программа должна напечатать значение переменной x, если x > 0 или же величину -x в противном случае (-(-5) = 5). Эту логику можно записать следующим образом:
В прошлых лекциях рассмотрели программы с линейной структурой: сначала выполнялась первая конструкция (например, объявление переменной), затем вторая (преобразование переменной или расчет по формуле), после – третья (print для вывода результатов). Можно сказать, что происходило последовательное исполнение команд, причем каждая инструкция выполнялась обязательно. Но что делать, если хочется опираться на обстоятельства и принимать решения о том, выполнять одну часть кода или другую?
Допустим, по числу x нужно определить его абсолютную величину, то есть модуль. Программа должна напечатать значение переменной x, если x > 0 или же величину -x в противном случае (-(-5) = 5). Эту логику можно записать следующим образом:
Для задания логики выполнения кода и создания нелинейности используются условные инструкции, поскольку они следуют некоторым условиям.
Условная инструкция задается ключевым словом if, после которого может следовать несколько (от нуля) блоков else if/elif, и – опционально – в конце добавляется else, если ни один из блоков выше не сработал.
Условия должны быть булевого типа (bool) и могут принимать всего два значения – True и False. Выполнится тот блок кода, который задан истинным (True) условием (и только первый!).
Условные конструкции можно вкладывать друг в друга, а также объединять с помощью логических операторов and, or и not.
Блок кода – это несколько подряд идущих команд, которые будут выполнены последовательно.
Чтобы выделить блок кода после условия, используйте отступы – четыре пробела.
Чтобы создать отступ в Jupyter, нужно нажать Tab в начале строки кода.
Упростить закрытие файлов можно с помощью контекстного менеджера.
Если логика кода подразумевает большое использование сравнений или сложные логические конструкции, то лучшим вариантом будет воспользоваться инструкцией match-case.
\ No newline at end of file
diff --git a/base/dictionary/index.html b/base/dictionary/index.html
index beb88a0..edf3ef5 100644
--- a/base/dictionary/index.html
+++ b/base/dictionary/index.html
@@ -1,4 +1,4 @@
- словари - python от ods.ai
dict (от английского «dictionary», словарь) – еще один тип данных в Python. Словари хранят пары ключ: значение. То есть в списках можно достать элемент, если указать его позицию в виде целого числа, а в словарях – тот самый ключ. dict – неупорядоченный тип данных, поэтому достать элемент по номеру не получится, но отображение содержимого будет в порядке добавления элементов. Уникальность ключей должна поддерживаться, чтобы всегда можно было быстро найти одно единственно верное значение.
В некоторых языках программирования можно встретить ассоциативные массивы – полную аналогию dict. Также вспомним базы данных, широко использующиеся во всём мире для хранения информации: в таблице можно установить первичный ключ, который уникально идентифицирует запись, как и ключ соответствует значению в словаре. Самый простой пример ключа - порядковый номер объекта!
Использовать словарь стоит, когда нужно сохранять объекты с какими-то ключами и обращаться к объектам по известным ключам. Один из способов определения словаря: указание пар ключ: значение через^запятую внутри фигурных скобок {}. Напоминает set, правда? {} позволяет создать пустой словарь, но не пустое множество.
Например, решили упростить себе жизнь и больше не запоминать дни рождения коллег. Вместо этого, лучше хранить их в одном месте:
dict (от английского «dictionary», словарь) – еще один тип данных в Python. Словари хранят пары ключ: значение. То есть в списках можно достать элемент, если указать его позицию в виде целого числа, а в словарях – тот самый ключ. dict – неупорядоченный тип данных, поэтому достать элемент по номеру не получится, но отображение содержимого будет в порядке добавления элементов. Уникальность ключей должна поддерживаться, чтобы всегда можно было быстро найти одно единственно верное значение.
В некоторых языках программирования можно встретить ассоциативные массивы – полную аналогию dict. Также вспомним базы данных, широко использующиеся во всём мире для хранения информации: в таблице можно установить первичный ключ, который уникально идентифицирует запись, как и ключ соответствует значению в словаре. Самый простой пример ключа - порядковый номер объекта!
Использовать словарь стоит, когда нужно сохранять объекты с какими-то ключами и обращаться к объектам по известным ключам. Один из способов определения словаря: указание пар ключ: значение через^запятую внутри фигурных скобок {}. Напоминает set, правда? {} позволяет создать пустой словарь, но не пустое множество.
Например, решили упростить себе жизнь и больше не запоминать дни рождения коллег. Вместо этого, лучше хранить их в одном месте:
требование к ключу: возможность хеширования, свойство ключа внутри словаря: уникальность;
разобрали, что есть изменяемые (dict, set, list) и неизменяемые (int, float, bool, tuple, str) стандартные типы данных.
\ No newline at end of file
diff --git a/base/final/index.html b/base/final/index.html
index a4ae3d1..e2ddda6 100644
--- a/base/final/index.html
+++ b/base/final/index.html
@@ -1,4 +1,4 @@
- финальная лекция - python от ods.ai
Хоть в пройденных лекциях по Python и содержится большое количество материала, проиллюстрированного примерами, с указанием на дополнительные темы для самостоятельного изучения – это все еще малая доля того, с чем вам придется столкнуться, если захочется продолжить развитие в этой теме. Да, грустно, но такова правда жизни. А еще столкнетесь с кучей проблем и ошибок во время время больше погружения. Если попытались разобраться с чем-либо, но не получилось – приходите к нам в сообщество, задавайте вопросы. Не забывайте и о взаимопомощи другим студентам – если материал или тема дались вам легко, то кому-то они могут показаться адски сложными.
Помните, что абсолютное большинство возникающих ошибок в Python неуникально; иного кто наступил на эти грабли. Не стесняйтесь пользоваться поисковиками для нахождения решений. Но перед этим обязательно прочитайте текст ошибки, попробуйте осознать, о чем Python хочет «сказать» - в этом языке программирования одни из самых понятных и доступных подсказок и указателей на проблемы. К примеру, IndexError: list index out of range явно говорит о том, что во время обращения к i-тому объекту некоторого списка (который, кстати, будет указан в так называемом traceback) возник выход за границы list. Возьмем для примера список sample_list чисел длины 5. Что произойдет, если обратиться к седьмому объекту sample_list[7]?
Обратите внимание на стрелочку слева, указывающую на строку номер 5 (кстати, в Jupyter Notebook для каждой отдельной ячейки можно включить нумерацию строк для удобства навигации с помощью клавиши l). Это место возникновения ошибки, та строка, на которой Python не смог выполнить инструкцию. Как можно решить проблему? Для начала методом пристального взгляда поймите, написано ли в коде то, что хотели – очень часто код, к примеру, копируется (хотя нужно избегать этого с помощью написания функций), но переменные в нем не меняются в силу невнимательности. Если все переменные в строке те же, что и должны быть, и ошибка не ясна, то следует заняться отладкой кода.
Самый простой способ отладки в Jupyter – это расстановка print-ов до проблемной строки. Да-да, так кустарно и грубо. Есть более продвинутые технологии (например, отладчики в IDE, то есть средах разработки), однако они выходят за рамки этого места. Очевидный совет - нужно размещать такой print, который помогает проверить какую-либо гипотезу о происхождении ошибки. Предложение таких гипотез – это отдельный навык, который приходит с опытом, так что не переживайте, что поначалу получается плохо «угадывать» и «понимать» ошибки.
В случае обращения по неверному индексу (list index out of range) логично предположить, что индекс оказался больше максимально возможного значения. Давайте выведем длину списка и индекс, по которому хотим обратиться:
И исходя из аргументов выше становится очевидно, в чем именно проблема. Конечно, рассмотренный случай крайне тривиален, однако он показывает базовые приемы поиска причин ошибок. Отметим также такой полезный прием как разбитие проблемной строки кода на подстроки, то есть разнесение кода на отдельные изолированные куски. В данном примере в отдельную переменную был записан индекс. Однако попробуйте угадать, в каком месте происходит ошибка в коде ниже:
Это уже более сложный пример, когда traceback состоит из двух блоков. Указатель на ошибку как бы «проваливается» внутрь вызываемой функции и показывает, что не так. В данном случае ошибка TypeError: unsupported operand type(s) for +: 'int' and 'str' указывает на несовместимость типов операндов в операции сложения. Слева int, справа str – ну и как же их суммировать?
Однако исходная строчка, порождающая ошибку, крайне сложна. Получается что вызываем функцию (print) от функции (first_f) от функции... Будь логика в коде чуть сложнее – легко можно запутаться, что именно породило ошибку (главное обращайте внимание на заголовки traceback, указывающие на названия методов и функций). С разбиением всё проще:
На этом остановимся. Главное помните, что можно распечатать и аргументы функции/метода, и атрибуты класса (в том числе скрытые/промежуточные состояния квантовой среды), и результаты расчетов.
Ранее весь код, который упоминался в лекциях (за вычетом примера из первой) был написан на чистом Python без сторонних библиотек, которые так нахваливали. В жизни, разумеется, они встретятся. Полезно поговорить о двух вещах - об импортах библиотек и их алиасах.
Для того, чтобы использовать какой-либо объект из сторонней библиотеки, будь то функция, класс или даже словарь (например, с физическими константами), необходимо знать, в какой библиотеке и по какому пути он лежит. Все это в основном описано в их документации, а также в примерах кода. Не переживайте, если они плохо запоминаются - чаще всего их копируют, и со временем в голове откладывается паттерн. И все же для того, чтобы получить доступ к библиотеке, нужно сделать следующее – рассмотрим на примере numpy, библиотеки для алгебраических расчетов. Сначала следует ключевое слово import, затем через пробел название пакета. Опционально через as можно добавить алиас - название, под которым можно будет обращаться в коде для доступа к функциям. У многих пакетов есть общепринятые алиасы, с которыми все знакомы. Для numpy это np. Итак,
Хоть в пройденных лекциях по Python и содержится большое количество материала, проиллюстрированного примерами, с указанием на дополнительные темы для самостоятельного изучения – это все еще малая доля того, с чем вам придется столкнуться, если захочется продолжить развитие в этой теме. Да, грустно, но такова правда жизни. А еще столкнетесь с кучей проблем и ошибок во время время больше погружения. Если попытались разобраться с чем-либо, но не получилось – приходите к нам в сообщество, задавайте вопросы. Не забывайте и о взаимопомощи другим студентам – если материал или тема дались вам легко, то кому-то они могут показаться адски сложными.
Помните, что абсолютное большинство возникающих ошибок в Python неуникально; иного кто наступил на эти грабли. Не стесняйтесь пользоваться поисковиками для нахождения решений. Но перед этим обязательно прочитайте текст ошибки, попробуйте осознать, о чем Python хочет «сказать» - в этом языке программирования одни из самых понятных и доступных подсказок и указателей на проблемы. К примеру, IndexError: list index out of range явно говорит о том, что во время обращения к i-тому объекту некоторого списка (который, кстати, будет указан в так называемом traceback) возник выход за границы list. Возьмем для примера список sample_list чисел длины 5. Что произойдет, если обратиться к седьмому объекту sample_list[7]?
Обратите внимание на стрелочку слева, указывающую на строку номер 5 (кстати, в Jupyter Notebook для каждой отдельной ячейки можно включить нумерацию строк для удобства навигации с помощью клавиши l). Это место возникновения ошибки, та строка, на которой Python не смог выполнить инструкцию. Как можно решить проблему? Для начала методом пристального взгляда поймите, написано ли в коде то, что хотели – очень часто код, к примеру, копируется (хотя нужно избегать этого с помощью написания функций), но переменные в нем не меняются в силу невнимательности. Если все переменные в строке те же, что и должны быть, и ошибка не ясна, то следует заняться отладкой кода.
Самый простой способ отладки в Jupyter – это расстановка print-ов до проблемной строки. Да-да, так кустарно и грубо. Есть более продвинутые технологии (например, отладчики в IDE, то есть средах разработки), однако они выходят за рамки этого места. Очевидный совет - нужно размещать такой print, который помогает проверить какую-либо гипотезу о происхождении ошибки. Предложение таких гипотез – это отдельный навык, который приходит с опытом, так что не переживайте, что поначалу получается плохо «угадывать» и «понимать» ошибки.
В случае обращения по неверному индексу (list index out of range) логично предположить, что индекс оказался больше максимально возможного значения. Давайте выведем длину списка и индекс, по которому хотим обратиться:
И исходя из аргументов выше становится очевидно, в чем именно проблема. Конечно, рассмотренный случай крайне тривиален, однако он показывает базовые приемы поиска причин ошибок. Отметим также такой полезный прием как разбитие проблемной строки кода на подстроки, то есть разнесение кода на отдельные изолированные куски. В данном примере в отдельную переменную был записан индекс. Однако попробуйте угадать, в каком месте происходит ошибка в коде ниже:
Это уже более сложный пример, когда traceback состоит из двух блоков. Указатель на ошибку как бы «проваливается» внутрь вызываемой функции и показывает, что не так. В данном случае ошибка TypeError: unsupported operand type(s) for +: 'int' and 'str' указывает на несовместимость типов операндов в операции сложения. Слева int, справа str – ну и как же их суммировать?
Однако исходная строчка, порождающая ошибку, крайне сложна. Получается что вызываем функцию (print) от функции (first_f) от функции... Будь логика в коде чуть сложнее – легко можно запутаться, что именно породило ошибку (главное обращайте внимание на заголовки traceback, указывающие на названия методов и функций). С разбиением всё проще:
На этом остановимся. Главное помните, что можно распечатать и аргументы функции/метода, и атрибуты класса (в том числе скрытые/промежуточные состояния квантовой среды), и результаты расчетов.
Ранее весь код, который упоминался в лекциях (за вычетом примера из первой) был написан на чистом Python без сторонних библиотек, которые так нахваливали. В жизни, разумеется, они встретятся. Полезно поговорить о двух вещах - об импортах библиотек и их алиасах.
Для того, чтобы использовать какой-либо объект из сторонней библиотеки, будь то функция, класс или даже словарь (например, с физическими константами), необходимо знать, в какой библиотеке и по какому пути он лежит. Все это в основном описано в их документации, а также в примерах кода. Не переживайте, если они плохо запоминаются - чаще всего их копируют, и со временем в голове откладывается паттерн. И все же для того, чтобы получить доступ к библиотеке, нужно сделать следующее – рассмотрим на примере numpy, библиотеки для алгебраических расчетов. Сначала следует ключевое слово import, затем через пробел название пакета. Опционально через as можно добавить алиас - название, под которым можно будет обращаться в коде для доступа к функциям. У многих пакетов есть общепринятые алиасы, с которыми все знакомы. Для numpy это np. Итак,
\ No newline at end of file
diff --git a/base/functions/index.html b/base/functions/index.html
index 412e37a..3e785da 100644
--- a/base/functions/index.html
+++ b/base/functions/index.html
@@ -1,4 +1,4 @@
- функции - python от ods.ai
В общем случае функцией можно назвать набор связанных инструкций, которые выполняют определенную задачу. Функции во всех языках программирования помогают:
структурировать код и улучшить читаемость;
переиспользовать код;
уменьшать количество мест, в которых можно ошибиться, при копировании и вставке кода.
Таким образом, функция — это инструмент композиции кода. Однажды определив набор инструкций, можно многократно использовать его, в том числе и как составную часть других функций.
именованные (определенные пользователем при помощи def);
анонимные (lambda-функции).
Все функции являются объектами типа function.
Мы уже использовали встроенные функции, например:
print() – вывод данных на экран;
str() – создание объектов строкового типа;
type() – определение типа объекта.
Ими можно пользоваться как черным ящиком, который принимает что-то на вход и творит свою магию. О том, что готовые функции ожидают получить, написано в документации вместе с описанием принципа работы.
Совет
После разбора лекции советуем открыть документацию print(), например, и разобраться с подробностями работы.
Очевидно, стандартные функции дают лишь базовый инструментарий. Реализовать более сложную логику можно самостоятельно.
В общем случае функцией можно назвать набор связанных инструкций, которые выполняют определенную задачу. Функции во всех языках программирования помогают:
структурировать код и улучшить читаемость;
переиспользовать код;
уменьшать количество мест, в которых можно ошибиться, при копировании и вставке кода.
Таким образом, функция — это инструмент композиции кода. Однажды определив набор инструкций, можно многократно использовать его, в том числе и как составную часть других функций.
именованные (определенные пользователем при помощи def);
анонимные (lambda-функции).
Все функции являются объектами типа function.
Мы уже использовали встроенные функции, например:
print() – вывод данных на экран;
str() – создание объектов строкового типа;
type() – определение типа объекта.
Ими можно пользоваться как черным ящиком, который принимает что-то на вход и творит свою магию. О том, что готовые функции ожидают получить, написано в документации вместе с описанием принципа работы.
Совет
После разбора лекции советуем открыть документацию print(), например, и разобраться с подробностями работы.
Очевидно, стандартные функции дают лишь базовый инструментарий. Реализовать более сложную логику можно самостоятельно.
Главное преимущество генераторов в том, что не тратятся вычислительные ресурсы на хранение ни промежуточного ни итогового результата. По этой причине генераторы удобно использовать при обработке больших последовательностей данных.
порядок указания — сначала позиционные, потом именованные
значения по умолчанию у именованных позволяют не указывать их при вызове
синтаксис со звездочками для получения заранее неизвестного числа позиционных (*some_list) и именованных (**some_dict) аргументов
в *some_list стоит одна *: эта конструкция для получения неограниченного количества позиционных/неименованных аргументов
в **some_dict две *: все именованные аргументы, явно не указанные среди параметров, попадут туда
что может возвращать функция при помощи return
return обозначает выход из функции и передачу «наружу» результата работы
в return можно перечислять несколько возвращаемых значений через запятую
в теле функции можно указать несколько return, всегда сработает не больше одного
чистые функции детерминированы и лишены побочных эффектов
чистые функции проще понять и отлаживать, поэтому они предпочтительнее
замыкания и каррирование позволяют создавать функции динамически, для каррирования можно использовать partial
что такое декораторы и как они работают, щепотку синтаксического сахара с @
использование декоратора эквивалентно сохранению результата вызова функции-декоратора с аргументом в виде оборачиваемой функции stupid_power = time_decorator(stupid_power)
что такое генераторы и как они работают с использованием оператора yield
\ No newline at end of file
diff --git a/base/index.html b/base/index.html
index ca0dbce..94a225f 100644
--- a/base/index.html
+++ b/base/index.html
@@ -1,4 +1,4 @@
- введение - python от ods.ai
этот раздел затрагивает базовые вещи о python 3.10+ как таковом
описание процесса установки среды разработки
описание синтаксиса языка программирования Python
разбор типовых синтаксических конструкций при программировании на Python
примеры анализа возникающих ошибок, помогающие в дальнейшем прохождении курса
\ No newline at end of file
diff --git a/base/jupyter/index.html b/base/jupyter/index.html
index 684fd34..70bcdc3 100644
--- a/base/jupyter/index.html
+++ b/base/jupyter/index.html
@@ -1,4 +1,4 @@
- ориентация в jupyter - python от ods.ai
Как любой мастер должен знать свой инструмент, так и любой человек, решивший пройти сию курс, должен понимать тонкости рабочей среды. Как уже могли понять по прошлому занятию, всю (или большую часть) работы будем делать в Jupyter Notebook. Но бояться нечего: по сути, Jupyter – это продвинутый текстовый редактор с функцией запуска кода и получения результатов вычислений. Настолько продвинутый, что позволяет вам не только рисовать картинки и писать формулы, но даже строить целые интерактивные карты:
На курсе, конечно, работы с гео-данными не будет, однако очень пригодятся вывод информации в виде таблиц, создание и отрисовка простых графиков, а главное, все это происходит в браузере. Редактирование кода в браузере не вызывает лишних проблем со средами разработки и в то же время оно доступно максимально широкому кругу людей. В этом редакторе можно запускать Python-код, что очень похоже на интерактивный редактор MATLAB, если с ним знакомы.
Благодаря удобству использования и доступности Jupyter в настоящее время стал крупным игроком в нише научных вычислений и быстрого прототипирования. Вдобавок он безумно удобен для обучения и передачи знаний. Почему? Давайте разбираться.
В Jupyter существует несколько типов ячеек, поговорим о двух основных: Code и Markdown. В прошлом уроке создали пустой ноутбук, чтобы проверить установку Jupyter. Ноутбуком это называется потому, что в переводе с английского notebook – это тетрадка (альтернативное название на русском языке). В тетрадке можно писать что-то осмысленное, черкаться, оставлять пометки. Сейчас должны видеть вот такой экран:
Здесь верхней красной чертой выделено поле с названием ноутбука. Можете кликнуть по нему, переименовать во что-то осмысленное и нажать Enter, чтобы применить изменения. Нижней же чертой обозначен выпадающий список переключений типов ячеек. По умолчанию создана одна code ячейка – в ней в будущем будем писать Python-код. Попробуйте кликнуть по списку и выбрать Markdown – визуально ячейка немного изменится.
Markdown (произносится маркда́ун) – облегченный язык разметки, созданный с целью обозначения форматирования в простом тексте с максимальным сохранением его читаемости человеком.
Пример: Text attributes _italic_, **bold**, `monospace`.
С помощью Markdown можно разнообразить код, вставить формулы (в том числе в LaTeX формате, если он вам знаком), ссылки на статьи и многое другое. Попробуйте скопировать код из примера выше в Markdown-ячейку и нажать кнопку Run:
Произошло следующее: ваша ячейка выполнилась и Jupyter отобразил ее содержимое. С помощью такого форматирования можно писать целые статьи с выкладками, формулами, графиками, то есть сопроводительной информацией. Поэтому, как уже было сказано, тетрадки очень удобны, особенно если соблюдать структуру, то есть писать сверху вниз с разделением на логические блоки. Также стоит отметить, что создалась новая Code-ячейка прямо под первой.
Замечание
Самая прекрасная часть тетрадок: ячейки разных типов можно смешивать по порядку, таким образом сначала описывая какую-то логику, а затем непосредственно реализовывая ее в коде и выполняя.
Пока не так часто придется писать Markdown-заметки самостоятельно, основная причина их создания – желание и дальнейшее удобство использования ноутбука. Есть также другая причина, по которой акцентируем на них внимание. Может произойти так, что случайно изменили тип ячейки и не заметили этого. Теперь, если в Markdown-ячейку вставить Python-код, то ничего не произойдет или возникнет ошибка. Если заметили что-то странное при выполнении кода в тетрадке – проверьте, корректен ли тип ячейки. Для выполнения кода нужно выставить тип Code.
Внимание
Посмотрите как визуально отличаются эти две ячейки. Одна из них имеет прозрачный фон, другая – серый. У Code ячейки также есть странная надпись слева (про нее еще поговорим).
Каждый раз вручную запускать код (или Markdown) через кнопку Run не очень-то удобно, поэтому можно запомнить две комбинации клавиш. Ctrl+Enter выполнит текущую ячейку и оставит «курсор» (указатель на ячейку) на том же месте, не создавая лишнюю строчку в ноутбуке. Shift+Enter повторит функциональность кнопки Run: выполнит ячейку, а затем перейдет на следующую (или создаст новую, если текущая ячейка является последней).
Первая комбинация (Ctrl+Enter) будет полезна в том случае, если что-то написали и знаете, что будете вносить изменения (например, менять цвет линии на графике в попытках добиться визуальной красоты), а значит, придется менять код в этой же ячейке.
Вторая (Shift+Enter) пригодится тогда, когда хотите запустить много-много идущих подряд ячеек (можете представить, что коллега скинул вам свою тетрадку с 30 клетками и вы хотите ее запустить, чтобы получить данные).
Не беспокойтесь, буквально к концу первого блока лекций выработается мышечная память и будете использовать сочетания клавиш на автомате.
Пришло время разобраться с цветом курсора, выделяющего ячейки. Он может быть синим или зелёным.
Никакой тайны за этим нет, это два режима: режим редактирования и командный режим. Зелёный цвет сигнализирует о том, что вы работаете с текстовым содержимым ячейки, то есть редактируете его! Можете писать код, вставлять формулы, что угодно. Но как только нажмете Esc на клавиатуре, цвет сменится на синий, что означает возможность редактирования всего ноутбука, а не отдельных ячеек в нем. Можно передвигать ячейки, удалять их (полностью, а не только текст в них), добавлять новые. Стрелочками на клавиатуре можно выбирать ячейки (скакать вверх и вниз). Как только доберетесь до нужной (а вместо этого можно просто кликнуть по ней мышкой, что полезно в ситуации, когда клетка очень далеко, в самом низу страницы) – жмите Enter, чтобы вернуться к редактированию.
Совет
Можно осуществлять переходы между режимами кликом мышки (внутри блока кода либо где-нибудь в стороне, слева или справа от ячейки, где ничего нет).
Выполнять описанные выше операции можно с помощью горячих клавиш (или горячих клавиш), либо через интерфейс. Описание выделенного блока кнопок для картинки выше (в порядке слева направо, с указанием сочетаний клавиш):
Сохранение ноутбука – Ctrl+S – делайте его почаще, дабы не потерять результаты работы!
Создание ячейки ниже текущей – B – потому, что создается клетка снизу, то есть Below. Логика для A и Above аналогична.
Вырезать ячейку – X – применимо и к целому блоку ячеек (можно выделить с зажатой клавишей Shift). Функциональность как и в Excel/Word: убрать в одном месте, чтобы вставить в другом.
Копировать ячейку – C.
Вставить ячейку из буфера – V – после вырезания или копирования ячейки.
Переместить текущую выделенную ячейку – вверх.
Переместить текущую выделенную ячейку – вниз.
Описание всех доступных команд (и соответствующих им хоткеев) доступно при нажатии на кнопку с клавиатурой в правой части выделенного блока меню (вне красного прямоугольника).
Упражнение
Попробуйте потратить 5-7 минут на практику использования этих кнопок и сочетаний клавиш.
Первое время можете пользоваться только элементами UI-интерфейса – это нормально, главное, сопоставить кнопки и стоящую за ними функциональность.
Про кнопку Run (и Shift+Enter) уже поговорили, а что с остальными?
Для того, чтобы можно было запускать код Python, запускается так называемое «ядро» (или kernel), то есть приложение, которое непосредственно выполняет (запускает) код и передает результаты обратно в Jupyter-ноутбук. За это отвечает как раз Run.
Справа от нее расположен Stop, который прерывает выполнение программы; может быть полезен в случаях, когда запустили расчеты на час, но заметили ошибку – и поэтому нужно и код переписать, и ячейку с кодом снова запустить. в этой ситуации сначала останавливаете выполнение, редактируете код, затем жмете Run – и всё готово!
Но случается беда и код не останавливается, потому что ядро Python зависает. В таких случаях нужно перезапустить ядро – и кнопка с закругленной стрелочкой Restart поможет осуществить задуманное. Будьте аккуратны – все несохраненные данные будут потеряны (значения переменных, результаты расчетов, данные для построения графиков). Сама тетрадка останется без изменений, то есть написанное сохранится. Концепция «ядра» и запуска кода станет более понятна, когда перейдем к практике.
Совет
Пока стоит держаться правила: «Накосячил? Попробуй остановить (Stop) ядро. Не получается? Тогда перезапускай (Restart) его!»
Нужно понимать, что ядро «помнит» все предыдущие выполненные ячейки (пока не будет перезагружено или выключено), а значит, можете позже в коде переиспользовать те части, которые были описаны ранее (например, переменные или физические константы). Иными словами, состояние ядра сохраняется во времени и между ячейками – оно относится к документу в целом, а не к отдельным ячейкам.
Последняя кнопка из выделенного блока имеет говорящее название: Re-start and run all. Ядро будет перезапущено (все переменные и данные удалятся), а затем каждая ячейка будет выполнена в порядке сверху вниз. Поэтому рекомендуется соблюдать структуру, чтобы запускать код с нуля (после возвращения к ноутбуку на следующий день, но с новым ядром, так как компьютер был выключен) – и он отрабатывал.
Та самая надпись слева от запущенной Code-ячейки. Это вспомогательная информация о том, что происходит с кодовой ячейкой (In означает Input, то есть ввод кода). Возможно несколько вариантов заполнения.
В первом случае в квадратных скобках ничего нет – это значит, что ячейка еще не была запущена. Возможно, вы забыли, а быть может, она просто ждет своего часа.
Во втором случае ячейка была запущена шестой по счету (да-да, ячейки выполняются по порядку, который задаете сами!) и она успешно отработала и завершилась.
В последней строчке умышленно был сделан бесконечный цикл. Это означает, что код никогда не сможет выполниться и будет висеть до тех пор, пока не остановите (кнопка Stop) ядро. Поэтому там выведен индикатор выполнения ячейки – в скобках указана звездочка *. Обратите внимание: это не всегда плохой сигнал. Если код должен выполняться 2-3 минуты, то все это время будет выводиться [*]. Когда код отработает и результат будет получен, отрисуется цифра (например, [7] ).
Пришло время программировать! Скопируйте себе в ячейку ноутбука кусок кода ниже и попробуйте его запустить. Не переживайте, он может показаться сложным и непонятным, но сейчас не требуется понимание всех деталей.
Как любой мастер должен знать свой инструмент, так и любой человек, решивший пройти сию курс, должен понимать тонкости рабочей среды. Как уже могли понять по прошлому занятию, всю (или большую часть) работы будем делать в Jupyter Notebook. Но бояться нечего: по сути, Jupyter – это продвинутый текстовый редактор с функцией запуска кода и получения результатов вычислений. Настолько продвинутый, что позволяет вам не только рисовать картинки и писать формулы, но даже строить целые интерактивные карты:
На курсе, конечно, работы с гео-данными не будет, однако очень пригодятся вывод информации в виде таблиц, создание и отрисовка простых графиков, а главное, все это происходит в браузере. Редактирование кода в браузере не вызывает лишних проблем со средами разработки и в то же время оно доступно максимально широкому кругу людей. В этом редакторе можно запускать Python-код, что очень похоже на интерактивный редактор MATLAB, если с ним знакомы.
Благодаря удобству использования и доступности Jupyter в настоящее время стал крупным игроком в нише научных вычислений и быстрого прототипирования. Вдобавок он безумно удобен для обучения и передачи знаний. Почему? Давайте разбираться.
В Jupyter существует несколько типов ячеек, поговорим о двух основных: Code и Markdown. В прошлом уроке создали пустой ноутбук, чтобы проверить установку Jupyter. Ноутбуком это называется потому, что в переводе с английского notebook – это тетрадка (альтернативное название на русском языке). В тетрадке можно писать что-то осмысленное, черкаться, оставлять пометки. Сейчас должны видеть вот такой экран:
Здесь верхней красной чертой выделено поле с названием ноутбука. Можете кликнуть по нему, переименовать во что-то осмысленное и нажать Enter, чтобы применить изменения. Нижней же чертой обозначен выпадающий список переключений типов ячеек. По умолчанию создана одна code ячейка – в ней в будущем будем писать Python-код. Попробуйте кликнуть по списку и выбрать Markdown – визуально ячейка немного изменится.
Markdown (произносится маркда́ун) – облегченный язык разметки, созданный с целью обозначения форматирования в простом тексте с максимальным сохранением его читаемости человеком.
Пример: Text attributes _italic_, **bold**, `monospace`.
С помощью Markdown можно разнообразить код, вставить формулы (в том числе в LaTeX формате, если он вам знаком), ссылки на статьи и многое другое. Попробуйте скопировать код из примера выше в Markdown-ячейку и нажать кнопку Run:
Произошло следующее: ваша ячейка выполнилась и Jupyter отобразил ее содержимое. С помощью такого форматирования можно писать целые статьи с выкладками, формулами, графиками, то есть сопроводительной информацией. Поэтому, как уже было сказано, тетрадки очень удобны, особенно если соблюдать структуру, то есть писать сверху вниз с разделением на логические блоки. Также стоит отметить, что создалась новая Code-ячейка прямо под первой.
Замечание
Самая прекрасная часть тетрадок: ячейки разных типов можно смешивать по порядку, таким образом сначала описывая какую-то логику, а затем непосредственно реализовывая ее в коде и выполняя.
Пока не так часто придется писать Markdown-заметки самостоятельно, основная причина их создания – желание и дальнейшее удобство использования ноутбука. Есть также другая причина, по которой акцентируем на них внимание. Может произойти так, что случайно изменили тип ячейки и не заметили этого. Теперь, если в Markdown-ячейку вставить Python-код, то ничего не произойдет или возникнет ошибка. Если заметили что-то странное при выполнении кода в тетрадке – проверьте, корректен ли тип ячейки. Для выполнения кода нужно выставить тип Code.
Внимание
Посмотрите как визуально отличаются эти две ячейки. Одна из них имеет прозрачный фон, другая – серый. У Code ячейки также есть странная надпись слева (про нее еще поговорим).
Каждый раз вручную запускать код (или Markdown) через кнопку Run не очень-то удобно, поэтому можно запомнить две комбинации клавиш. Ctrl+Enter выполнит текущую ячейку и оставит «курсор» (указатель на ячейку) на том же месте, не создавая лишнюю строчку в ноутбуке. Shift+Enter повторит функциональность кнопки Run: выполнит ячейку, а затем перейдет на следующую (или создаст новую, если текущая ячейка является последней).
Первая комбинация (Ctrl+Enter) будет полезна в том случае, если что-то написали и знаете, что будете вносить изменения (например, менять цвет линии на графике в попытках добиться визуальной красоты), а значит, придется менять код в этой же ячейке.
Вторая (Shift+Enter) пригодится тогда, когда хотите запустить много-много идущих подряд ячеек (можете представить, что коллега скинул вам свою тетрадку с 30 клетками и вы хотите ее запустить, чтобы получить данные).
Не беспокойтесь, буквально к концу первого блока лекций выработается мышечная память и будете использовать сочетания клавиш на автомате.
Пришло время разобраться с цветом курсора, выделяющего ячейки. Он может быть синим или зелёным.
Никакой тайны за этим нет, это два режима: режим редактирования и командный режим. Зелёный цвет сигнализирует о том, что вы работаете с текстовым содержимым ячейки, то есть редактируете его! Можете писать код, вставлять формулы, что угодно. Но как только нажмете Esc на клавиатуре, цвет сменится на синий, что означает возможность редактирования всего ноутбука, а не отдельных ячеек в нем. Можно передвигать ячейки, удалять их (полностью, а не только текст в них), добавлять новые. Стрелочками на клавиатуре можно выбирать ячейки (скакать вверх и вниз). Как только доберетесь до нужной (а вместо этого можно просто кликнуть по ней мышкой, что полезно в ситуации, когда клетка очень далеко, в самом низу страницы) – жмите Enter, чтобы вернуться к редактированию.
Совет
Можно осуществлять переходы между режимами кликом мышки (внутри блока кода либо где-нибудь в стороне, слева или справа от ячейки, где ничего нет).
Выполнять описанные выше операции можно с помощью горячих клавиш (или горячих клавиш), либо через интерфейс. Описание выделенного блока кнопок для картинки выше (в порядке слева направо, с указанием сочетаний клавиш):
Сохранение ноутбука – Ctrl+S – делайте его почаще, дабы не потерять результаты работы!
Создание ячейки ниже текущей – B – потому, что создается клетка снизу, то есть Below. Логика для A и Above аналогична.
Вырезать ячейку – X – применимо и к целому блоку ячеек (можно выделить с зажатой клавишей Shift). Функциональность как и в Excel/Word: убрать в одном месте, чтобы вставить в другом.
Копировать ячейку – C.
Вставить ячейку из буфера – V – после вырезания или копирования ячейки.
Переместить текущую выделенную ячейку – вверх.
Переместить текущую выделенную ячейку – вниз.
Описание всех доступных команд (и соответствующих им хоткеев) доступно при нажатии на кнопку с клавиатурой в правой части выделенного блока меню (вне красного прямоугольника).
Упражнение
Попробуйте потратить 5-7 минут на практику использования этих кнопок и сочетаний клавиш.
Первое время можете пользоваться только элементами UI-интерфейса – это нормально, главное, сопоставить кнопки и стоящую за ними функциональность.
Про кнопку Run (и Shift+Enter) уже поговорили, а что с остальными?
Для того, чтобы можно было запускать код Python, запускается так называемое «ядро» (или kernel), то есть приложение, которое непосредственно выполняет (запускает) код и передает результаты обратно в Jupyter-ноутбук. За это отвечает как раз Run.
Справа от нее расположен Stop, который прерывает выполнение программы; может быть полезен в случаях, когда запустили расчеты на час, но заметили ошибку – и поэтому нужно и код переписать, и ячейку с кодом снова запустить. в этой ситуации сначала останавливаете выполнение, редактируете код, затем жмете Run – и всё готово!
Но случается беда и код не останавливается, потому что ядро Python зависает. В таких случаях нужно перезапустить ядро – и кнопка с закругленной стрелочкой Restart поможет осуществить задуманное. Будьте аккуратны – все несохраненные данные будут потеряны (значения переменных, результаты расчетов, данные для построения графиков). Сама тетрадка останется без изменений, то есть написанное сохранится. Концепция «ядра» и запуска кода станет более понятна, когда перейдем к практике.
Совет
Пока стоит держаться правила: «Накосячил? Попробуй остановить (Stop) ядро. Не получается? Тогда перезапускай (Restart) его!»
Нужно понимать, что ядро «помнит» все предыдущие выполненные ячейки (пока не будет перезагружено или выключено), а значит, можете позже в коде переиспользовать те части, которые были описаны ранее (например, переменные или физические константы). Иными словами, состояние ядра сохраняется во времени и между ячейками – оно относится к документу в целом, а не к отдельным ячейкам.
Последняя кнопка из выделенного блока имеет говорящее название: Re-start and run all. Ядро будет перезапущено (все переменные и данные удалятся), а затем каждая ячейка будет выполнена в порядке сверху вниз. Поэтому рекомендуется соблюдать структуру, чтобы запускать код с нуля (после возвращения к ноутбуку на следующий день, но с новым ядром, так как компьютер был выключен) – и он отрабатывал.
Та самая надпись слева от запущенной Code-ячейки. Это вспомогательная информация о том, что происходит с кодовой ячейкой (In означает Input, то есть ввод кода). Возможно несколько вариантов заполнения.
В первом случае в квадратных скобках ничего нет – это значит, что ячейка еще не была запущена. Возможно, вы забыли, а быть может, она просто ждет своего часа.
Во втором случае ячейка была запущена шестой по счету (да-да, ячейки выполняются по порядку, который задаете сами!) и она успешно отработала и завершилась.
В последней строчке умышленно был сделан бесконечный цикл. Это означает, что код никогда не сможет выполниться и будет висеть до тех пор, пока не остановите (кнопка Stop) ядро. Поэтому там выведен индикатор выполнения ячейки – в скобках указана звездочка *. Обратите внимание: это не всегда плохой сигнал. Если код должен выполняться 2-3 минуты, то все это время будет выводиться [*]. Когда код отработает и результат будет получен, отрисуется цифра (например, [7] ).
Пришло время программировать! Скопируйте себе в ячейку ноутбука кусок кода ниже и попробуйте его запустить. Не переживайте, он может показаться сложным и непонятным, но сейчас не требуется понимание всех деталей.
1 2 3 4
@@ -49,6 +49,6 @@
5# Fixing random state for reproducibilityModuleNotFoundError:Nomodulenamed'mat'
-
Ошибка. По сообщению видно (стрелочка в левой части указывает на проблемное место), что во второй строчке используется слово mat, при этом Python жалуется на отсутствие такого модуля. Всё дело в том, что в коде выше производится попытка рисования графика и для этого используется библиотека matplotlib. Но в одной из строк написано только mat. Это не дело, давайте исправлять. Однако всех библиотек не запомнишь – и это не нужно. Попробуйте поставить курсор после буквы t (и перед точкой) и нажать Tab; должны увидеть список подсказок и из него выбрать нужный вариант. Этот список не только сокращает время написания кода (за счет автоматического дополнения), но и позволяет избежать ошибок в написании. Обязательно пользуйтесь этим инструментом.
Если все сделали правильно, воспользовавшись подсказкой, то после очередного запуска (Run) кода появится рисунок.
Что ж, большое количество новой информации позади, давайте подведем итоги!
Если захочется узнать больше о трюках в ноутбуках, о недостатках и преимуществах по сравнению с альтернативами, предлагаем посмотреть выступление Joel Grus:
\ No newline at end of file
diff --git a/base/list_loop/index.html b/base/list_loop/index.html
index 9084bb4..ffd7ae0 100644
--- a/base/list_loop/index.html
+++ b/base/list_loop/index.html
@@ -1,4 +1,4 @@
- списки и циклы - python от ods.ai
В предыдущих лекциях операции были с малым количеством переменных. Для каждого блока логики или примера кода вводилось 3-5 объектов, над которыми осуществлялись некоторые операции. Но что делать, если объектов куда больше? Скажем, необходимо хранить информацию об учащихся класса – пусть это будет рост, оценка по математике или что-либо другое. Крайне неудобно будет создавать и хранить 30 отдельных переменных. А если ещё и нужно посчитать среднюю оценку в классе!
В предыдущих лекциях операции были с малым количеством переменных. Для каждого блока логики или примера кода вводилось 3-5 объектов, над которыми осуществлялись некоторые операции. Но что делать, если объектов куда больше? Скажем, необходимо хранить информацию об учащихся класса – пусть это будет рост, оценка по математике или что-либо другое. Крайне неудобно будет создавать и хранить 30 отдельных переменных. А если ещё и нужно посчитать среднюю оценку в классе!
Такой код к тому же получается крайне негибким: если количество студентов, как и их состав, изменится, то нужно и формулу переписать, так ещё и делитель – в нашем случае 30 – изменять.
Часто в программах приходится работать с большим количеством однотипных переменных. Специально для этого придуманы массивы (по-английски array). В Python их ещё называют списками (list). В некоторых языках программирования эти понятия отличаются, но не в Python. Список может хранить переменные разного типа. Также списки называют «контейнерами», так как они хранят какой-то набор данных. Для создания простого списка необходимо указать квадратные скобки или вызвать конструктор типа (list – это отдельный тип, фактически такой же, как int или str), а затем перечислить объекты через запятую:
Две части кода идентичны за вычетом того, что нижняя – с непонятной конструкцией в скобках – короче. Python позволяет в рамках одной строки произвести какие-либо простые преобразования (помним, что str() – это вызов функции!). Фактически самый частый пример использования – это паттерн «применение функции к каждому объекту списка».
list – это объект-контейнер, который хранит другие объекты разных типов; запись происходит упорядочено и последовательно, а каждому объекту присвоен целочисленный номер, начиная с нуля;
для добавления одного объекта в list нужно использовать метод объекта list – append(), а для расширения списка сразу на несколько позиций пригодится extend();
проверить, входит ли объект в список, можно с помощью конструкции obj in some_list;
индексы могут быть отрицательными: -1, -2 ... В таком случае нумерация начинается от последнего объекта;
можно получить часть списка, сделав срез с помощью конструкции list[start_index : end_index], при этом объект на позиции end_idnex не будет включён в возвращаемый список (т.е. срез работает не включительно по правую границу);
В зависимости от задачи – иногда удобнее и правильнее использовать tuple вместо list;
часто со списками используют циклы, которые позволяют итерироваться по объектам массива и выполнять произвольную логику в рамках отделенного отступом блока кода;
для итерации по индексам можно использовать range(), а для итерации по элементам с индексами – enumerate();
простые циклы можно свернуть в list comprehension, и самый частый паттерн для такого преобразования – это применение некоторой функции к каждому объекту списка (если x это функция, то синтаксис будет таков: [x(item) for item in list])).
\ No newline at end of file
diff --git a/base/object_class_method/index.html b/base/object_class_method/index.html
index a7eac19..62e38be 100644
--- a/base/object_class_method/index.html
+++ b/base/object_class_method/index.html
@@ -1,4 +1,4 @@
- объекты, классы и методы - python от ods.ai
Что же такое объектно-ориентированное программирование? Судя по названию, ключевую роль здесь играют объекты, на которые ориентируется дальнейший процесс программирования. Если взглянем на реальный мир, то для нас он предстанет в виде множества объектов, обладающих определенными свойствами, взаимодействующих между собой и вследствие этого изменяющимися. Эта привычная для взгляда человека картина мира была перенесена в программирование. Python - это объектно-ориентированный язык программирования, и всё в нем является объектами.
Объект - это набор данных и инструкций в памяти компьютера, в том числе:
тип объекта
данные, формирующие объект (контент внутри него)
методы
Как определить тип уже знаем. И с объектами на самом деле знакомы с самого начала - ведь даже целочисленная переменная 5, имеющая type(5) = int, представляет собой объект.
Напомним
Методы - это те же функции, только существующие не сами по себе, а являющиеся частью класса.
Что же такое объектно-ориентированное программирование? Судя по названию, ключевую роль здесь играют объекты, на которые ориентируется дальнейший процесс программирования. Если взглянем на реальный мир, то для нас он предстанет в виде множества объектов, обладающих определенными свойствами, взаимодействующих между собой и вследствие этого изменяющимися. Эта привычная для взгляда человека картина мира была перенесена в программирование. Python - это объектно-ориентированный язык программирования, и всё в нем является объектами.
Объект - это набор данных и инструкций в памяти компьютера, в том числе:
тип объекта
данные, формирующие объект (контент внутри него)
методы
Как определить тип уже знаем. И с объектами на самом деле знакомы с самого начала - ведь даже целочисленная переменная 5, имеющая type(5) = int, представляет собой объект.
Напомним
Методы - это те же функции, только существующие не сами по себе, а являющиеся частью класса.
Обратите внимание на то, что функция one_system_cycle не возвращает system - ведь прямо во время итераций меняем ее состояние, и в последующие моменты времени эти изменения сохраняются, то есть состояние остается. Таким образом, эту систему (среду) - а именно объект, экземпляр класса System - как параметр можно передавать в десятки функций, и каждая из них будет видеть актуальное состояние.
объекты одного класса отличаются между собой атрибутами, которые придают уникальности;
методы классов позволяют описывать логику взаимодействия, обновлять состояние;
для объявления класса нужно определить как минимум один метод __init__;
классы без методов можно использовать как удобное хранилище разнородной информации о схожих объектах (описать разных студентов и их оценки).
Это далеко не все, что можно написать по теме классов и объектов, однако это тот необходимый минимум, что потребуется для ознакомления. Больше примеров и деталей можно найти, например, по ссылкам:
\ No newline at end of file
diff --git a/base/syntactic_sugar/index.html b/base/syntactic_sugar/index.html
index 76f8113..4e0f1c5 100644
--- a/base/syntactic_sugar/index.html
+++ b/base/syntactic_sugar/index.html
@@ -1,4 +1,4 @@
- синтаксический сахар - python от ods.ai
Синтаксический сахар — это синтаксис, который позволяет разработчикам писать код проще, «сладким» способом. Следовательно, такой способ даёт роскошь не знать, как работает система под капотом. Синтаксический сахар связан не только с Python, подробнее по ссылке.
Раннее уже были изучены некоторые способы использования синтаксического сахара в Python, такие как:
Магические методы (иногда их ещё называют специальными методами) — это методы с предопределенными именами, характеризующимися двойным подчеркиванием в начале и в конце - __init__ как пример. Они являются «магическими», потому что
эти методы вызываются косвенно
не нужно вызывать напрямую
все делается за кулисами
Например, когда создаётся экземпляр класса x = MyClass(), Python выполнит необходимые вызовы __new__ и __init__.
Синтаксический сахар — это синтаксис, который позволяет разработчикам писать код проще, «сладким» способом. Следовательно, такой способ даёт роскошь не знать, как работает система под капотом. Синтаксический сахар связан не только с Python, подробнее по ссылке.
Раннее уже были изучены некоторые способы использования синтаксического сахара в Python, такие как:
Магические методы (иногда их ещё называют специальными методами) — это методы с предопределенными именами, характеризующимися двойным подчеркиванием в начале и в конце - __init__ как пример. Они являются «магическими», потому что
эти методы вызываются косвенно
не нужно вызывать напрямую
все делается за кулисами
Например, когда создаётся экземпляр класса x = MyClass(), Python выполнит необходимые вызовы __new__ и __init__.
Как видно, синтаксический сахар облегчает жизнь программистам, и часто они даже не замечают или даже не знают, что используем его, но в любом случае всегда полезно знать, как он работает в деталях, потому что рано или поздно придётся глубже понять как работает та или иная вещь, чтобы успешно решать сложные задачи.
\ No newline at end of file
diff --git a/base/tools_install/index.html b/base/tools_install/index.html
index 78053ad..fcd1b9a 100644
--- a/base/tools_install/index.html
+++ b/base/tools_install/index.html
@@ -1,4 +1,4 @@
- установка инструментов - python от ods.ai
При разработке Python-приложений или использовании решений на Python, созданных другими разработчиками, может возникнуть ряд проблем, связанных с использованием библиотек различных версий, к примеру:
различные приложения могут использовать одну и туже библиотеку, но при этом требуемые версии могут отличаться
может возникнуть необходимость в том, чтобы запретить вносить изменения в приложение на уровне библиотек, к примеру, установили приложение и хотите, чтобы оно работало независимо от того обновляются библиотеки или нет. Как понимаете, если оно будет использовать библиотеки из глобального хранилища (/usr/lib/python3/site-packages/), то, со временем, могут возникнуть проблемы
просто может не быть доступа к директории /usr/lib/python3/site-packages/
Для решения данных вопросов используется подход, основанный на построении виртуальных окружений – своего рода песочниц, в рамках которых запускается приложение со своими библиотеками, обновление и изменение которых не затронет другие приложение, использующие те же библиотеки.
Программное обеспечение, которое позволяет создавать виртуальные окружения в Python можно разделить на те, что входят в стандартную библиотеку Python и не входят в неё. Сделаем краткий обзор доступных инструментов (хороший пост на эту тем есть на stackoverflow).
Начнем с инструментов, которые входят в PyPI – Python Package Index – репозиторий пакетов Python, доступный для любого разработчика и пользователя Python.
virtualenv
Это, наверное, одни из самых популярных инструментов, позволяющих создавать виртуальные окружения. Он прост в установке и использовании. В сети довольно много руководств по virtualenv. Этот инструмент нужно обязательно освоить, как минимум, потому что описание развертывания и использования многих систем, созданных с использованием Python, включает в себя процесс создания виртуального окружения с помощью virtualenv.
pyenv
Инструмент для изоляции версий Python. Чаще всего применяется, когда на одной машине вам нужно иметь несколько версий интерпретатора.
virtualenvwrapper
Это обертка для virtualenv позволяющая хранить все изолированные окружения в одном месте, создавать их, копировать и удалять. Предоставляет удобный способ переключения между окружениями и возможность расширять функционал за счет плагинов. Существуют ещё инструменты и плагины, выполняющие работу по изоляции частей системы Python.
venv
Этот модуль появился в Python3 и не может быть использован для решения задачи изоляции в Python2. По своему функционалу очень похож на virtualenv. Если вы работаете с третьим Python, то можете смело использовать данный инструмент.
poetry, pipenv, pipx ..
И это ещё не все, которые также отвечают за виртуальное окружение, с которыми предлагаем ознакомится самим.
При разработке Python-приложений или использовании решений на Python, созданных другими разработчиками, может возникнуть ряд проблем, связанных с использованием библиотек различных версий, к примеру:
различные приложения могут использовать одну и туже библиотеку, но при этом требуемые версии могут отличаться
может возникнуть необходимость в том, чтобы запретить вносить изменения в приложение на уровне библиотек, к примеру, установили приложение и хотите, чтобы оно работало независимо от того обновляются библиотеки или нет. Как понимаете, если оно будет использовать библиотеки из глобального хранилища (/usr/lib/python3/site-packages/), то, со временем, могут возникнуть проблемы
просто может не быть доступа к директории /usr/lib/python3/site-packages/
Для решения данных вопросов используется подход, основанный на построении виртуальных окружений – своего рода песочниц, в рамках которых запускается приложение со своими библиотеками, обновление и изменение которых не затронет другие приложение, использующие те же библиотеки.
Программное обеспечение, которое позволяет создавать виртуальные окружения в Python можно разделить на те, что входят в стандартную библиотеку Python и не входят в неё. Сделаем краткий обзор доступных инструментов (хороший пост на эту тем есть на stackoverflow).
Начнем с инструментов, которые входят в PyPI – Python Package Index – репозиторий пакетов Python, доступный для любого разработчика и пользователя Python.
virtualenv
Это, наверное, одни из самых популярных инструментов, позволяющих создавать виртуальные окружения. Он прост в установке и использовании. В сети довольно много руководств по virtualenv. Этот инструмент нужно обязательно освоить, как минимум, потому что описание развертывания и использования многих систем, созданных с использованием Python, включает в себя процесс создания виртуального окружения с помощью virtualenv.
pyenv
Инструмент для изоляции версий Python. Чаще всего применяется, когда на одной машине вам нужно иметь несколько версий интерпретатора.
virtualenvwrapper
Это обертка для virtualenv позволяющая хранить все изолированные окружения в одном месте, создавать их, копировать и удалять. Предоставляет удобный способ переключения между окружениями и возможность расширять функционал за счет плагинов. Существуют ещё инструменты и плагины, выполняющие работу по изоляции частей системы Python.
venv
Этот модуль появился в Python3 и не может быть использован для решения задачи изоляции в Python2. По своему функционалу очень похож на virtualenv. Если вы работаете с третьим Python, то можете смело использовать данный инструмент.
poetry, pipenv, pipx ..
И это ещё не все, которые также отвечают за виртуальное окружение, с которыми предлагаем ознакомится самим.
-p python3.10 – с помощью флага -p указываем версию Python окружения (3.10)
env_py310 – имя окружения
Другие флаги
Для просмотра доступных флагов нужно к команде добавить --help; для virtualenv это
virtualenv--help
После выполнения данной команды, в текущей директории будет создана новая директория с именем env_py310, где
env_py310/bin/ – содержит скрипты для активации/деактивации окружения, интерпретатор Python, используемый в рамках данного окружения, менеджер pip и ещё несколько инструментов, обеспечивающих работу с пакетами Python. В Windows, это директория env_py310\Scripts\
env_py310/include/ и env_py310/lib/ – директории, содержащие библиотечные файлы окружения. Новые пакеты будут установлены в директорию env_py310/lib/python3.10/site-packages/
Затем найдите кнопку с текстом < > Code и кликните по ней. В открывшемся окне убедитесь, что выбрана вкладка HTTPS, а не SSH или GitHub CLI. Скопируйте предложенную ссылку (это такое же, если скопировать ссылку вкладки браузера). После зайдите в терминал в нужную директорию и выполните
\ No newline at end of file
diff --git a/base/variable_types_output/index.html b/base/variable_types_output/index.html
index 6193c24..4f54148 100644
--- a/base/variable_types_output/index.html
+++ b/base/variable_types_output/index.html
@@ -1,4 +1,4 @@
- переменные, типы и вывод - python от ods.ai
Настало время приступить к изучению непосредственно Python, ведь по прошествии пары лекций об языке программирования и не говорили вовсе! Начнем со знакомой всем по школьным карандашам формулы\(E=mc^2\). По ней можно вычислить полную энергию физического объекта \(E\) с помощью известной массы объекта \(m\) и константы \(c\). Эта постоянная, указывающая на скорость света в вакууме, используется настолько часто, что для нее выделили отдельное обозначение в виде буквы латинского алфавита, как и для многих других аналогичных величин. Если в формуле встречается \(c\) (в известном контексте), то вы всегда уверены, что именно нужно подставить при расчетах.
Этот пример полностью описывает концепцию переменных в языках программирования, и Python не исключение. Запись \(x = 3\) означает, что везде по тексту далее под иксом подразумевается именно тройка, и ничего другого (пока не будет введено новое определение). Этой же логике подчиняется Python. Сначала указывается имя переменной, а затем – ассоциируемое с ней значение.
Настало время приступить к изучению непосредственно Python, ведь по прошествии пары лекций об языке программирования и не говорили вовсе! Начнем со знакомой всем по школьным карандашам формулы\(E=mc^2\). По ней можно вычислить полную энергию физического объекта \(E\) с помощью известной массы объекта \(m\) и константы \(c\). Эта постоянная, указывающая на скорость света в вакууме, используется настолько часто, что для нее выделили отдельное обозначение в виде буквы латинского алфавита, как и для многих других аналогичных величин. Если в формуле встречается \(c\) (в известном контексте), то вы всегда уверены, что именно нужно подставить при расчетах.
Этот пример полностью описывает концепцию переменных в языках программирования, и Python не исключение. Запись \(x = 3\) означает, что везде по тексту далее под иксом подразумевается именно тройка, и ничего другого (пока не будет введено новое определение). Этой же логике подчиняется Python. Сначала указывается имя переменной, а затем – ассоциируемое с ней значение.
Переменные – это «контейнеры», в которые можно что-то положить и дать название.
Математика в Python не имеет сложных правил, процесс вычислений максимально интуитивен.
Арифметические операции могут менять тип результирующей переменной.
type(), print() – базовые функции, с помощью которых можно делать самопроверки по ходу написания кода.
Сменить тип переменной можно вызовом функций int(), float(), str().
Строки могут обрамляться как ', так и " (но этих символов не должно быть внутри текста).
f-строки облегчают комплексный вывод, содержащий как текст, так и переменные Python (и автоматически приводит типы).
\ No newline at end of file
diff --git a/community/index.html b/community/index.html
index 05af5e8..b37f098 100644
--- a/community/index.html
+++ b/community/index.html
@@ -1,4 +1,4 @@
- сообщество - python от ods.ai
\ No newline at end of file
diff --git a/index.html b/index.html
index 0fb30c9..42bdbbe 100644
--- a/index.html
+++ b/index.html
@@ -1,4 +1,4 @@
- главная - python от ods.ai
Python есть такой язык программирования, который позволяет сообщить компьютеру о том, что нужно сделать, дабы достичь некоего результата. За последнее десятилетие он получил быстрое распространение и сейчас является одним из самых популярных языков программирования в мире. Входной порог для его использования достаточно низок: можно использовать Python для решения своих задач даже если никогда не имели дела с программированием.
зачем?
В этом чудесном месте планируется затронуть основные моменты Python (с упором на машинное обучение): база, как работать с основными библиотеками, что есть правильный код, асинхронность, тесты и т.д. и т.п. Кто-то без умолку уронит замечание, дескать, этого всего сполна, но тут упор делаем на примеры в той самой промышленности. Будем рады любой помощи в составлении материалов, практики и иного доброго словца – contributing.md.
Проект находится в стадии разработки «основы python». Подискутировать о курсе можно тут.
В основе разностороннего применения и популярности лежит простота изучения: всё чаще люди начинают свой путь в программировании с Python, поскольку он очень дружелюбен к новичкам и позволяет максимально быстро перейти к решению целевой задачи.
Сюда же можно отнести многообразие библиотек (или расширений функциональности, то есть кода, написанного другими людьми, который можно переиспользовать). Хотите изучить физику небесных тел и симулировать их взаимодействия? Можно найти и скачать библиотеку, позволяющую за один вечер провести вычисления, о которых в прошлом веке можно было лишь мечтать. Хотите создать прототип мобильного приложения? И на этот случай есть библиотека. Вам нравится квантовая физика и хотите использовать её вместе с умными компьютерными алгоритмами? Что ж, тогда снова по адресу.
Python – это высокоуровневый язык для быстрой разработки и/или прототипирования, на нем очень удобно проверять гипотезы и идеи. «Высокоуровневый» означает, что не нужно вникать в устройство компьютера и тонкости взаимодействия с ним, чтобы перейти к задаче. Многое «сделано за нас»: работаем с простыми абстракциями (или удобными представлениями), а не боремся с компьютером из-за непонимания сложностей его устройства.
Еще один плюс в копилку популярности языка – это элегантность и краткость синтаксиса (принципов написания кода, как будто это абзацы в тексте или колонки в газете). Вместе с вышеупомянутым обилием библиотек можно буквально за 5 минут и 10 строк кода – а это меньше половины листа А4 – воспроизвести научную статью, в которую вложено несколько человеко-лет. А еще такой синтаксис делает код легким для чтения, запоминания и понимания.
Стоит отметить, что Python – это интерпретируемый язык, а значит, компьютер каждый раз перед выполнением программы читает код строчку за строчкой и определяет (интерпретирует), что нужно сделать дальше, не проводя никаких оптимизаций и предварительных расчетов. Это негативно влияет на общую скорость работы: Python является одним из самых медленных языков. Тем не менее он отлично подходит для академических целей, например, исследовательской работы или других задач, где скорость работы не является критически важной. Настоящая сила Python заключается в том, что это «язык-клей»: он обеспечивает удобный доступ к различным библиотекам, написанным на высокоэффективных языках, например, на C/C++, Fortran, CUDA C и других.
В простоте языка и его доступности для быстрого старта таится одна из проблем: можно не понимать, что происходит внутри, поэтому иногда бывает сложно разобраться в причинах ошибок и неточностей, возникающих по ходу работы над задачей. В целом к Python применим следующий принцип: «легко научиться, трудно овладеть». Возвращаясь к примеру элегантности кода, когда 10 строк кода выполняют всю работу: важно понимать, что за ними стоят еще сотни или даже тысячи строк кода, а это может приводить к ситуациям, когда поиск ошибки в минимальном наборе команд растягивается на несколько дней.
Ежегодные опросы Stack Overflow в мае 2022 года определили, что JavaScript десятый год подряд становится наиболее часто используемым языком программирования. (65,36%, в предыдущем году - 64,9%, большинство участников Stack Overflow web-разработчики).
Но для тех, кто учится программировать, картина другая. HTML/CSS, Javascript и Python почти связаны как самые популярные языки для людей, изучающих программирование. Люди, изучающие программирование, чаще, чем профессиональные разработчики, сообщают об использовании Python (58% против 44%), C++ (35% против 20%) и C (32% против 17%).
Пять лет подряд Python определялся участниками опросов как наиболее востребованная технология, однако в 2022 Rust незначительно опередил Python:
Рейтинг TIOBE составляется из всех актуальных языков программирования (около 100). Как видно из рейтинга, Python возглавляет рейтинг. Такой успех можно объяснить возможностью выполнения широкого спектра задач и удобством языка. Удобство заключается в том, что Python - высокоуровневый язык. Это означает, что сложные описания структур машинного кода выполнены в удобно читаемом для человека виде. Стоит отметить, что при изучении языка необходимо уделять больше времени пониманию того, как работают стандартные функции, поскольку это позволит быстрее прокачивать свой навык программирования.
Python — отличный выбор для практически любого проекта. Но если он выбран, важно понимать и о последствиях такого выбора. Ограничения Python по сравнению с другими языками:
ограничения скорости - поскольку Python интерпретируется, это часто приводит к медленному выполнению, однако, это не проблема, если скорость не является ключевым фактором для жизнедеятельности проекта
слаб в мобильных вычислениях и браузерах - хотя Python служит отличным серверным языком, он редко встречается на стороне клиента
ограничения дизайна - Python имеет динамическую типизацию. Это означает, что не нужно объявлять тип переменной при написании кода. Хотя это очень удобно для разработчиков при написании кода, но это может привести к ошибкам при исполнении и чтении кода
недостаточно развитые уровни доступа к базе данных - по сравнению с более широко используемыми технологиями, такими как JDBC (Java DataBase Connectivity) и ODBC (Open DataBase Connectivity), уровни доступа к базе данных Python немного недоработаны; следовательно, он реже применяется на крупных предприятиях
Несмотря на некоторые проблемы со скоростью, безопасностью и временем выполнения, Python — отличный язык для изучения.
Его популярность говорит сама за себя и это объясняется тем, что он простой, интерпретируемый, объектно-ориентированный, расширяемый, встраиваемый, переносимый и читабельный.
Бизнес во многих отраслях осознаёт важность получения как можно большего количества информации из своих данных, что создаёт высокий спрос на Python. Такой спрос на Python в Data Science возник из-за универсальности языка программирования, который позволяет ускорить процессы обработки данных и эффективно удовлетворить потребности бизнеса.
Популярность Python для специалистов по данным возросла, потому что легко обучить, изучить и просто использовать. Python идеально подходит как для новичков в области работы с данными, так и для опытных программистов, которые хотят сменить карьеру на индустрию данных.
Бизнес предпочитают Python другим технологиям для выполнения ежедневных задач с данными¶
Python можно классифицировать как универсальный язык программирования, который позволяет специалистам по данным быстро выполнять основные ежедневные задачи с данными, что делает Python настолько привлекательным для бизнеса в различных отраслях, которые ищут специалистов по данным. Навыки программирования на Python стали визитной карточкой настоящего специалиста по данным для специалистов по найму и работодателей.
Вот 3 основные причины, по которым компании предпочитают Python другим технологиям, таким как Matlab, R, Java или C, для выполнения повседневных задач по обработке данных:
универсальность - Python позволяет специалистам по данным быстро и легко выполнять задачи по обработке данных, статистике, математике, машинному обучению и визуализации в одной среде разработки
open-source - Python имеет открытый исходный код, а его стандартные библиотеки позволяют пользователям экономить, столь ценное для бизнеса, время при разработке решений и тестировании продуктов с использованием структур данных Python, инструментов анализа и изменяемого исходного кода
удобный для пользователя - Python считается одним из самых удобных для пользователя и объектно-ориентированных языков для изучения начинающими программистами и людьми, меняющими профессию, из-за его простоты использования и поддержки онлайн-сообщества. Например, в интерфейсе Python используется простой для понимания код со встроенными типами данных и динамической типизацией для ускоренной разработки, тестирования и внедрения прототипов.
Сравнение, как выглядит одна и та же функция (расчёт факториала), написанная на Java и на Python:
Python есть такой язык программирования, который позволяет сообщить компьютеру о том, что нужно сделать, дабы достичь некоего результата. За последнее десятилетие он получил быстрое распространение и сейчас является одним из самых популярных языков программирования в мире. Входной порог для его использования достаточно низок: можно использовать Python для решения своих задач даже если никогда не имели дела с программированием.
зачем?
В этом чудесном месте планируется затронуть основные моменты Python (с упором на машинное обучение): база, как работать с основными библиотеками, что есть правильный код, асинхронность, тесты и т.д. и т.п. Кто-то без умолку уронит замечание, дескать, этого всего сполна, но тут упор делаем на примеры в той самой промышленности. Будем рады любой помощи в составлении материалов, практики и иного доброго словца – contributing.md.
Проект находится в стадии разработки «основы python». Подискутировать о курсе можно тут.
В основе разностороннего применения и популярности лежит простота изучения: всё чаще люди начинают свой путь в программировании с Python, поскольку он очень дружелюбен к новичкам и позволяет максимально быстро перейти к решению целевой задачи.
Сюда же можно отнести многообразие библиотек (или расширений функциональности, то есть кода, написанного другими людьми, который можно переиспользовать). Хотите изучить физику небесных тел и симулировать их взаимодействия? Можно найти и скачать библиотеку, позволяющую за один вечер провести вычисления, о которых в прошлом веке можно было лишь мечтать. Хотите создать прототип мобильного приложения? И на этот случай есть библиотека. Вам нравится квантовая физика и хотите использовать её вместе с умными компьютерными алгоритмами? Что ж, тогда снова по адресу.
Python – это высокоуровневый язык для быстрой разработки и/или прототипирования, на нем очень удобно проверять гипотезы и идеи. «Высокоуровневый» означает, что не нужно вникать в устройство компьютера и тонкости взаимодействия с ним, чтобы перейти к задаче. Многое «сделано за нас»: работаем с простыми абстракциями (или удобными представлениями), а не боремся с компьютером из-за непонимания сложностей его устройства.
Еще один плюс в копилку популярности языка – это элегантность и краткость синтаксиса (принципов написания кода, как будто это абзацы в тексте или колонки в газете). Вместе с вышеупомянутым обилием библиотек можно буквально за 5 минут и 10 строк кода – а это меньше половины листа А4 – воспроизвести научную статью, в которую вложено несколько человеко-лет. А еще такой синтаксис делает код легким для чтения, запоминания и понимания.
Стоит отметить, что Python – это интерпретируемый язык, а значит, компьютер каждый раз перед выполнением программы читает код строчку за строчкой и определяет (интерпретирует), что нужно сделать дальше, не проводя никаких оптимизаций и предварительных расчетов. Это негативно влияет на общую скорость работы: Python является одним из самых медленных языков. Тем не менее он отлично подходит для академических целей, например, исследовательской работы или других задач, где скорость работы не является критически важной. Настоящая сила Python заключается в том, что это «язык-клей»: он обеспечивает удобный доступ к различным библиотекам, написанным на высокоэффективных языках, например, на C/C++, Fortran, CUDA C и других.
В простоте языка и его доступности для быстрого старта таится одна из проблем: можно не понимать, что происходит внутри, поэтому иногда бывает сложно разобраться в причинах ошибок и неточностей, возникающих по ходу работы над задачей. В целом к Python применим следующий принцип: «легко научиться, трудно овладеть». Возвращаясь к примеру элегантности кода, когда 10 строк кода выполняют всю работу: важно понимать, что за ними стоят еще сотни или даже тысячи строк кода, а это может приводить к ситуациям, когда поиск ошибки в минимальном наборе команд растягивается на несколько дней.
Ежегодные опросы Stack Overflow в мае 2022 года определили, что JavaScript десятый год подряд становится наиболее часто используемым языком программирования. (65,36%, в предыдущем году - 64,9%, большинство участников Stack Overflow web-разработчики).
Но для тех, кто учится программировать, картина другая. HTML/CSS, Javascript и Python почти связаны как самые популярные языки для людей, изучающих программирование. Люди, изучающие программирование, чаще, чем профессиональные разработчики, сообщают об использовании Python (58% против 44%), C++ (35% против 20%) и C (32% против 17%).
Пять лет подряд Python определялся участниками опросов как наиболее востребованная технология, однако в 2022 Rust незначительно опередил Python:
Рейтинг TIOBE составляется из всех актуальных языков программирования (около 100). Как видно из рейтинга, Python возглавляет рейтинг. Такой успех можно объяснить возможностью выполнения широкого спектра задач и удобством языка. Удобство заключается в том, что Python - высокоуровневый язык. Это означает, что сложные описания структур машинного кода выполнены в удобно читаемом для человека виде. Стоит отметить, что при изучении языка необходимо уделять больше времени пониманию того, как работают стандартные функции, поскольку это позволит быстрее прокачивать свой навык программирования.
Python — отличный выбор для практически любого проекта. Но если он выбран, важно понимать и о последствиях такого выбора. Ограничения Python по сравнению с другими языками:
ограничения скорости - поскольку Python интерпретируется, это часто приводит к медленному выполнению, однако, это не проблема, если скорость не является ключевым фактором для жизнедеятельности проекта
слаб в мобильных вычислениях и браузерах - хотя Python служит отличным серверным языком, он редко встречается на стороне клиента
ограничения дизайна - Python имеет динамическую типизацию. Это означает, что не нужно объявлять тип переменной при написании кода. Хотя это очень удобно для разработчиков при написании кода, но это может привести к ошибкам при исполнении и чтении кода
недостаточно развитые уровни доступа к базе данных - по сравнению с более широко используемыми технологиями, такими как JDBC (Java DataBase Connectivity) и ODBC (Open DataBase Connectivity), уровни доступа к базе данных Python немного недоработаны; следовательно, он реже применяется на крупных предприятиях
Несмотря на некоторые проблемы со скоростью, безопасностью и временем выполнения, Python — отличный язык для изучения.
Его популярность говорит сама за себя и это объясняется тем, что он простой, интерпретируемый, объектно-ориентированный, расширяемый, встраиваемый, переносимый и читабельный.
Бизнес во многих отраслях осознаёт важность получения как можно большего количества информации из своих данных, что создаёт высокий спрос на Python. Такой спрос на Python в Data Science возник из-за универсальности языка программирования, который позволяет ускорить процессы обработки данных и эффективно удовлетворить потребности бизнеса.
Популярность Python для специалистов по данным возросла, потому что легко обучить, изучить и просто использовать. Python идеально подходит как для новичков в области работы с данными, так и для опытных программистов, которые хотят сменить карьеру на индустрию данных.
Бизнес предпочитают Python другим технологиям для выполнения ежедневных задач с данными¶
Python можно классифицировать как универсальный язык программирования, который позволяет специалистам по данным быстро выполнять основные ежедневные задачи с данными, что делает Python настолько привлекательным для бизнеса в различных отраслях, которые ищут специалистов по данным. Навыки программирования на Python стали визитной карточкой настоящего специалиста по данным для специалистов по найму и работодателей.
Вот 3 основные причины, по которым компании предпочитают Python другим технологиям, таким как Matlab, R, Java или C, для выполнения повседневных задач по обработке данных:
универсальность - Python позволяет специалистам по данным быстро и легко выполнять задачи по обработке данных, статистике, математике, машинному обучению и визуализации в одной среде разработки
open-source - Python имеет открытый исходный код, а его стандартные библиотеки позволяют пользователям экономить, столь ценное для бизнеса, время при разработке решений и тестировании продуктов с использованием структур данных Python, инструментов анализа и изменяемого исходного кода
удобный для пользователя - Python считается одним из самых удобных для пользователя и объектно-ориентированных языков для изучения начинающими программистами и людьми, меняющими профессию, из-за его простоты использования и поддержки онлайн-сообщества. Например, в интерфейсе Python используется простой для понимания код со встроенными типами данных и динамической типизацией для ускоренной разработки, тестирования и внедрения прототипов.
Сравнение, как выглядит одна и та же функция (расчёт факториала), написанная на Java и на Python:
Как Python используется в Data Science и машинном обучении?¶
Когда дело доходит до выбора языка программирования в Data Science, он всегда определяется типом проекта, над которым была проделана работа.
В настоящее время Python чаще всего используется в индустрии при разработке, тестировании и реализации проектов и процессов автоматизированного машинного обучения.
Исследователь данных или инженер по машинному обучению будет использовать Python при выполнении проектов искусственного интеллекта и машинного обучения, включающих анализ настроений, обработку естественного языка или предиктивную аналитику, чтобы получать информацию о полезных тенденциях и закономерностях из структурированных и неструктурированных наборов данных.
Это стало возможным благодаря развивающимся и бесплатным для всех пакетам библиотек Python, предназначенным для упрощения разработки, тестирования и выполнения проектов машинного обучения для специалистов по данным.
Конкретные примеры ниже иллюстрируют, как некоторые из этих библиотек Python используются в индустрии для ключевых задач в операциях, связанных с Data Science, для каждого бизнеса, включая обработку данных, анализ, манипулирование, автоматизацию и машинное обучение:
NumPy - числового анализа данных, изображений и текста
SciPy - научных вычислений
Pandas - расширенной обработки данных
Scikit-learn - машинного обучения, визуализации данных, обработки изображений/текстовых данных
Matplotlib - визуализации данных
Применение Python в ведущих компаниях, ориентированных на данные, и будущее Python в Data Science¶
Индустрия данных стала доверять Python как многоцелевому языку программирования.
Уверенность и рост среди пользователей Python развивались по мере того, как Python доказывал свою способность адаптироваться к ежедневным требованиям компаний к данным, ориентированных на пользователей. Python позволил этим компаниям быстро и эффективно выполнять необходимые задачи по анализу данных, визуализации, автоматизации и машинному обучению.
Python используют практически все крупные компании, о которых слышим каждый день: Сбер, Авито, Лента, VK, МТС, МегаФон, Miro, Лаборатория Касперского, ЦФТ, ВТБ.. список можно продолжать почти что бесконечно.
Вот лишь некоторые из способов, которыми ведущие компании планеты, работающие с данными, используют Python:
Yandex - Python используется в Яндекс уже более 15 лет и за это время было как переписано многое с различных языков программирования, например с Perl так и написано много с нуля. Python используют практически в каждом сервисе в том или ином виде. Активно используют фреймворк Django для создания web-сервисов, таких как Афишу, Погоду, Телепрограмму и другие. Примерно 15 лет назад практически весь backend был написан на C++ и переход на Python позволил сильно ускорить разработку сервисов. Активно используют почти все современные фреймворки, такие как Flask, Celery, Falcon, которые как и Django написаны на Python. Для написания асинхронного кода используют такие фреймворки как Tornado, Twisted и модуль стандартной библиотеки asyncio. Что касается Data Science, то и тут Python не обошли стороной: был разработан известный в кругах специалистов по машинному обучению фреймворк CatBoost, и хотя для написания такого фреймворка использовались и другие языки, тем не менее вклад Python примерно в 25% общего кода имеет достаточно большой вклад в проект.
VK - Python всё чаще используется социальной сетью ВКонтакте для проектирования, управления инфраструктурой и операционной автоматизации. Чтобы удовлетворить свои критические потребности пользователей в обновлениях в реальном времени, удобстве использования и подключении, ВКонтакте использует фреймворки, написанные на Python, которые быстро обрабатывает обширный веб-трафик, предоставляя пользователям эффективную работу в режиме реального времени каждый раз, когда они входят в систему. Также используют Python для своего API.
Netflix - Python повсеместно используется службой создания контента и потоковой передачи ее группами по Data Science и инженерами для анализа данных на стороне сервера, визуализации и тестирования, прогнозной аналитики данных, автоматизации оповещений и безопасности, а также мониторинга данных в реальном времени и разработки внутренних операционных процессов. Например, персонализированные плейлисты «Вы должны посмотреть это следующим, потому что вы смотрели…» используют алгоритмы глубокого обучения и прогнозной аналитики, чтобы дать конкретные рекомендации, основанные на индивидуальной аналитике поведенческих данных.
Google - Python используется в максимально возможной степени - включая анализ данных, тестирование и мониторинг, автоматизацию и прогнозную аналитику, веб-приложения и разработку и т.д. Также использовал Python для создания фреймворка глубокого обучения TensorFlow, который используется для проектов машинного обучения компаний по всему миру.
Личное мнение
Ожидается, что в будущем Python и Data Science сохранят прочное партнерство благодаря приверженности Python разработке и регулярному выпуску обновлений, отвечающих требованиям индустрии данных и новых технологий. Если среда программирования Python продолжит расширять свои возможности и универсальность, она по-прежнему будет предпочтительным языком для компаний, проектов и специалистов по работе с данными.
Изучите Python, чтобы подготовиться к успешной карьере в Data Science!¶
Если есть заинтересованность в карьере связанной с индустрией данных, можно подготовиться к успеху, пройдя этот настоящий курс о языке программирования Python.
Изучение использования Python для Data Science даст конкурентное преимущество при поиске первой работы или при смене карьеры связанной с индустрией данных.
Совет
Рекомендуется в процессе изучения заглядывать в официальную документацию и в частности The Python Tutorial.
Разработчик языка Гвидо ван Россум назвал его в честь популярного британского комедийного телешоу 1970-х «Летающий цирк Монти Пайтона»
Актуальной версией Python считаются версии 3.6 и выше (3.7, 3.8.12..). Долгое время (до 2020) года существовал Python2, который ныне не поддерживается и не обновляется. Если видите кусок кода на Python2 и вам предстоит работать с ним, возможно, сначала придется его переписать, хотя большая часть кода имеет совместимость и работает корректно. Естественно тут не будем изучать Python2
Довольно огромное сообщество: большинство проблем, с которыми можете столкнуться, уже было озвучено и даже решено. Это означает, что используя поисковик, можете решить практически все проблемы в течение 10-30 минут. Главное – научиться правильно формулировать свои вопросы
При работе с Python следует придерживаться принципа «должен существовать один и, желательно, только один очевидный способ сделать это». Другие принципы (Дзен Питона) на русском языке – по ссылке
Python – это открытый проект, в который каждый может внести изменения (но они должны быть предварительно одобрены), например, тут
Есть целый набор рекомендаций и предложений по улучшению кода (PEP, Python Enhancement Proposals). Они содержат указания на то, как следует писать код и чего стоит избегать, а также дискуссии о будущих изменениях в языке
Язык постоянно развивается, в нем появляются новые возможности, улучшается производительность (скорость выполнения)
Сборник всех существующих в открытом доступе библиотек находится по адресу pypi.org
Если столкнетесь с багом (системной ошибкой, вызванной внутренним механизмом языка), то сообщить об этом можно на специальном сайте
\ No newline at end of file
diff --git a/sitemap.xml b/sitemap.xml
index fa1d2fc..04ca8e2 100644
--- a/sitemap.xml
+++ b/sitemap.xml
@@ -2,72 +2,72 @@
https://open-data-science.github.io/pycourse/
- 2024-11-25
+ 2024-12-02dailyhttps://open-data-science.github.io/pycourse/authors/
- 2024-11-25
+ 2024-12-02dailyhttps://open-data-science.github.io/pycourse/community/
- 2024-11-25
+ 2024-12-02dailyhttps://open-data-science.github.io/pycourse/base/
- 2024-11-25
+ 2024-12-02dailyhttps://open-data-science.github.io/pycourse/base/conditional_comparison/
- 2024-11-25
+ 2024-12-02dailyhttps://open-data-science.github.io/pycourse/base/dictionary/
- 2024-11-25
+ 2024-12-02dailyhttps://open-data-science.github.io/pycourse/base/final/
- 2024-11-25
+ 2024-12-02dailyhttps://open-data-science.github.io/pycourse/base/functions/
- 2024-11-25
+ 2024-12-02dailyhttps://open-data-science.github.io/pycourse/base/jupyter/
- 2024-11-25
+ 2024-12-02dailyhttps://open-data-science.github.io/pycourse/base/list_loop/
- 2024-11-25
+ 2024-12-02dailyhttps://open-data-science.github.io/pycourse/base/object_class_method/
- 2024-11-25
+ 2024-12-02dailyhttps://open-data-science.github.io/pycourse/base/syntactic_sugar/
- 2024-11-25
+ 2024-12-02dailyhttps://open-data-science.github.io/pycourse/base/tools_install/
- 2024-11-25
+ 2024-12-02dailyhttps://open-data-science.github.io/pycourse/base/variable_types_output/
- 2024-11-25
+ 2024-12-02daily
\ No newline at end of file
diff --git a/sitemap.xml.gz b/sitemap.xml.gz
index 46de2b8..d09be5c 100644
Binary files a/sitemap.xml.gz and b/sitemap.xml.gz differ