
This course includes our updated coding exercises so you can practice your skills as you learn.
See a demo
Небольшое интро для новичков, как выглядит программирование и написанная программа, чтоб избежать "киношных" стереотипов.
Немного о рейтинге языка python и его ключевых особенностях, чтоб те кто знаком с другим языком, могли сразу бегло понять разницу.
На Python можно решить большинство задач, язык очень многофункционален, широко применяется и впечатляет своими возможностями. Но тем не менее, есть такие моменты как: устоявшиеся стандарты отрасли (сферы), бизнес процессы, наличие других языков программирования которые могут подходить лучше для каких-то задач и тд. Поэтому в этой лекции - только сферы, в которых Python применяется в профессиональной бизнес среде (основные).
Немного основ работы с терминалом, чтоб понимать что и почему происходит, а не просто повторять.
Здесь приведены основные отличия в разных оболочках терминала (Power Shell. zsh, bash, sh) и для примера некоторые команды для каждой из них, включая информацию о относительных путях и правах пользователя (root - nonroot).
Лекция состоит из 2-х подразделов: сначала кратко о актуальности знаний в зависимости от появления новых версий языка python и актуальности курса, а во второй части разбор принципа указания версий в python, что пригодиться в дальнейшем в работе (забегая наперед).
Во время обучения можно использовать альтернативные варианты работы с python, для того чтоб опробовать работу простых фрагментов кода, если временно нет доступа к своему ПК. Это поможет не потерять прогресс пока в разъездах или опробовать "озарение", не дожидаясь возможности сесть за свой компьютер.
Кратко о том, как пользоваться Jupyter Notebook в приложении Google Colaboratory.
Google Colaboratory - облачная платформа для совместной разработки (или соло) в сфере аналитики, анализа данных и подобного, где Вы работаете в среде Jupyter Notebook.
Jupyter Notebook - "смесь" интерактивного режима работы python с режимом чтения из фала, где Вы можете тестировать отдельные блоки кода, без необходимости выполнять сразу весь код вашей программы.
Посмотрим как правильно установить python на Windows и выбрать место установки.
Установим (обновим) python на Mac с официального сайта, а не из магазина приложений.
Здесь показан процесс установки Python на Linux Ubuntu, Debian и Mint, вариантом сборки из исходного кода Python. В других дистрибутивах линукс процесс аналогичен, их слишком много, чтоб все показать. Я закрепил ссылку в лекции на официальную документацию Python, где есть описание установки на дистрибутивы которых нет в лекции (Fedora, OpenSuse и другие), процесс аналогичен, разобраться в небольшой разнице получится.
В лекции рассмотрено:
1) Работа с файлами python без IDE.
2) Кодировка в операционных системах (кратко), и как изменить кодировку файла на utf-8.
3) Создание и выполнение python файлов. Разница в режимах работы интерпретатора python.
4) Пример с небольшим скриптом автоматизации запуска программ на ПК при помощи python (чтоб сформировать общую картинку).
5) И другие мелкие нюансы, чтоб процесс работы был максимально прозрачным.
Ссылка на файл с настройками закреплена в лекции.
В лекции:
Обзор редактора VS Code.
Установка необходимых расширений для работы с python. После настройки, из редактора превратится в полноценную IDE.
Настройка анализатора кода pylance и мелочей, для комфортной работы.
Обзор PyCharm IDE.
Выбирать Вам, какую IDE использовать. Курс буду вести на VS Code, иногда переключаясь на PyCharm для того чтоб показать разницу в использовании.
Немного о концепции необходимости в абстрагировании от аппаратной реализации и реализации вообще многих вещей в программировании, которые было бы неуместно реализовывать каждый раз заново.
Также познакомимся с понятием системных вызовов и общей информации об устройстве ОС и ПК и месте программ в в этом, в том числе языков программирования.
Узнаем об иерархии Ассемблер > C > Python в общих чертах.
Базовая информация о:
Переменные и простые манипуляции с данными.
Правила именования переменных в python.
Ключевые слова, мягкие ключевые слова, имена встроенных функций в python.
Заметки в коде.
Начальные правила документирования при помощи комментариев.
Возможность временно "игнорировать" блок кода.
Познакомимся с функцией range в python и вспомним про объекты итераторы.
Немного глубже оговорим моменты свойств, которые могут быть у объектов, да пока немного в абстрактной форме, ведь классы и ООП программирование мы на этом этапе курса еще не изучали. И заодно методы и другие атрибуты range посмотрим.
Посмотрим на распространенные варианты использования цикла for в связке с функцией range в python:
Итерация в for через индексы.
Обратная итерация списка с возможностью удалять элементы или добавлять их в конец списка.
Цикличное выполнение действий как замена while в некоторых случаях.
В лекции:
Принцип сравнения коллекций операторами сравнения.
Подробнее про варианты копирования объектов контейнерного типа в python.
Поверхностные и глубокие копии.
Познакомимся с функциями scandir и walk из модуля os в python.
Обход файлового дерева.
Сбор путей к файлам и каталогам.
Поиск файлов по имени и расширению.
Исключение директорий из обхода функции walk.
Познакомимся с функциями из модуля os и path в python, которые позволяют удобно работать с путями (path) расположения каталогов (директорий) и файлов.
Список всех основных функций из модуля приложен к лекции.
Проработаем особенности некоторых функций.
Поговорим о контексте работы вашего кода относительно других директорий на ПК.
Посмотрим что такое символические ссылки на файлы и директории в Windows, Linux и Mac (не ярлыки).
Это нам поможет для правильного обхода каталогов и файлов при автоматизации поиска и вообще работы с файловой системой.
Глубже познакомимся с символическими ссылками и жесткими ссылками.
Узнаем что такое индексный дескриптор (inode) и MFT-запись.
Разберем устройство файлов.
Узнаем о существовании файловых дескрипторов, как предпосылке к работе с "файл-подобными виртуальными объектами".
В статье кроме описания что такое символические и жесткие ссылки. Представлен набор команд для каждой ОС, по созданию симлинков, жестких ссылок и точек соединения (junction) в Windows (как дополнение к прошлым двум лекциям):
Linux
Mac
Windows (cmd и Power Shell)
В лекции:
Что такое POSIX время.
Метаданные временных меток в атрибутах фалов (python os.path):
- getatime
- getctime
- getmtime
Доработаем нашу программу на python, для поиска файлов на ПК по имени и расширению. Добавим возможность поиска по дате создания/изменения и обработаем возможные симлинки.
Узнаем что такое процессы и поток выполнения программы, какая информация храниться в процессе о программе, затронем на начальном уровне понятия "родительский" - "дочерний" процесс. В общем, обрисуем начало темы процессов, для дальнейшего более глубокого рассмотрения.
Разберемся с работой со стандартными потоками (не путать с потоком выполнения процесса) ввода-вывода: stdin, stdout, stderr, как механизма взаимодействия с процессом посредством обмена текстовой информации.
Познакомимся с перенаправлением этих потоков.
Узнаем что такое PIPE.
В этой лекции ключевым акцентом есть рассмотрение жизненного цикла и управления процессами, запущенными средствами оболочки в Linux и Mac. Будет рассмотрено:
Концепция управляющего терминала.
tty, pty устройство.
Связь процесса с pty.
Варианты запуска процессов и управление ими.
Подробнее про нюансы связи "родительский-дочерний" процессы.
В этой лекции ключевым акцентом есть рассмотрение жизненного цикла и управления процессами, запущенными средствами оболочки в Windows. Будет рассмотрено:
Концепция связи процессов с conhost процессом.
Варианты запуска процессов и управление ими в cmd и Power Shell.
Подробнее про нюансы связи "родительский-дочерний" процессы.
Сравнение нюансов реализации и механизмов с Linux и Mac.
В лекции необходимо разобрать как работать когда кодировка <, >, | (stdin, stdout и pipe) не совпадает с системной, между программами и терминалом. На Windows не совсем новых релизов это норма жизни, а пользователи Linux/Mac тоже смотрим, так как факт того, что вам просто повезло с единой кодировкой для всего, не значит что это не нужно знать (пс... мы даже будем читать напрямую из буфера байты, прям как взрослые, и менять кодировку ввода/вывода python и узнаем что такое кодировки в принципе).
Функция system из модуля os в python нужна для запуска оболочки и передачи в нее команд из python.
Одно дело, когда процесс запускается напрямую из терминала, другое - когда процесс порождается через один или несколько прокси процессов. Рассмотрим нюансы использования функции system из модуля os в python, чтоб научиться, а главное понять нюансы/отличия и ситуации (рассмотрены Windows и Linux/Mac).
Довольно объемная лекция получилась, что в ней:
Нюансы запуска процессов через модуль subprocess в python (Windows, Linux, Mac)
Рассмотрены с нюансами функции run, Popen (класс), os.popen.
Получение stdout (и in и err) в python код (процесс) из другого процесса через PIPE и работа с ним.
communicate с дочерним процессом и его завершение.
Как работать если stdout программы в другой кодировке.
Как писать stdout дочерним процессом в файл.
Другие мелочи и нюансы.
В лекции - использование Popen из модуля subprocess в python для запуска независимых фоновых процессов.
В лекции:
Флаги DETACHED_PROCESS, CREATE_NO_WINDOW, CREATE_NEW_PROCESS_GROUP, CREATE_NEW_CONSOLE.
Параметр start_new_session.
Как это можно комбинировать и какой эффект.
Создадим фоновый процесс python с интересным заданием для него.
Посмотрим на setsid и посмотрим как на Linux/Mac через функцию Popen в subprocess python создать новую независимую сессию процесса, не зависящую от управляющего терминала и родительского процесса сразу, а не как побочный эффект потери родительского процесса.
В образовательных целях посмотрим что такое shell инъекция, для осведомленности и возможности писать более безопасные программы.
Доработаем нашу python программу, чтоб после поиска файла, его можно было сразу открыть для просмотра.
Познакомимся с модулем shutil в python, который предоставляет удобные функции для: создать, удалить, копировать, переместить, архивировать фалы и папки, распаковать архив и другое.
Доработаем нашу программу python для автоматизации резервного копирования файлов, в том числе, после их поиска и сбора по критерию со всего ПК.
Здесь приведены основные команды терминала в разных оболочках операционных систем (Windows, Mac, Linux) (Power Shell, zsh, bash), при помощи которых можно: создать, удалить, копировать, переместить, архивировать фалы и папки, распаковать архив и тд. А также, аналогичные функции из модуля shutil и os в python, которые позволяют это делать удобно используя функции языка python.
В этой лекции мы рассмотрим базовые моменты определения функций в python, как первоначальную зарисовку концепции, и базовые нюансы + затронем тему локальных и глобальных переменных и параметров, чтоб сформировать общую начальную картинку перед более глубоким изучением функций и стека.
Здесь рассмотрено подробно и косвенно:
Определение и именование функций.
Жизненный цикл локальных переменных и объектов.
Возврат значений из функции (оператор return).
Ход интерпретации программы с функциями.
Параметры у функции.
Глобальные переменные.
Эта лекция объясняет на примере скомпилированной в машинный код программы, как происходит старт процесса, загрузка исполняемого кода и формирование потока выполнения в процессе.
В частности, пример на Си взят для демонстрации как пример, где четко видно влияние функций и стека на формирование потока выполнения, первой точки вхождения в поток выполнения, разницы глобальных и локальных переменных, переключения между фрагментами машинных инструкций и других "больших мелочей" магии выполнения программы. Это знать желательно, чтоб работа с интерпретируемым языком была прозрачнее и понятнее, ведь обычно программисты только интерпретируемых языков, лишены, на этапе обучения, этих тонкостей архитектурного решения устройства потока выполнения.
Отставляем клавиатуры, делаем чай/кофе и бутерброды. В этой лекции:
Как выполняется python программа.
Что такое байт-код и как он формируется.
Процесс выполнения (интерпретации) байт-кода PVM и как формируется поток выполнения python программы (где место нашим инструкциям в потоке выполнения).
Интерпретация vs JIT-компиляция.
Как python описывает объекты (что такое структуры).
Объекты даже модули и функции? Как отслеживается порядок выполнения.
Реальный/"виртуальный" стек и нюансы отображения функций в стеке.
Связанные полезные мелочи и уточнения.
Для начала изучения классов, сначала разберемся откуда берется базовое поведение у объектов в python, как происходит наследование и по какому принципу происходит поиск методов для объектов в иерархии.
Четко определим для себя, что объекты всё, включая классы в python, и что mro указывает принцип поиска атрибутов для объекта, к которому применяется метод, а так как классы - тоже объекты, то учтем и это.
Добро пожаловать на курс по языку программирования Python!
Это не обычный курс по python, в котором выкладка только по сухим правилам языка, я добавил в этот курс большое количество информации по Computer Science, терминалу и не только, чтоб абсолютные новички могли полностью все понять и научиться именно программировать, а уже бывалые программисты заполнить пробелы или вспомнить подзабытое. Акцент курса не только на изучение python, а научиться именно программировать, что по моему является главным. Чем бы человек ни занимался, он должен уметь применять знания.
Этот курс по Python полностью моя авторская разработка, а не перевод/пересказ или что-то подобное. Его структура отражает мое видение этапов и последовательности информации как это нужно изучать.
Поэтому, этот курс по python рассчитан как для тех, кто никогда раньше не занимался программированием, так и для программистов кто хочет изучить python как дополнительный язык.
В курсе есть:
Основы и глубокие элементы синтаксиса языка python.
Большое количество практики и заданий.
Объясняется как применять, а не только что оно есть.
Работа и изучение терминала (в разных ОС с примерами).
Необходимая информация о структурах данных в python, алгоритмах работы с ними, процессах в разрезе Computer Science.
Информация и работа с процессами и файловой системой в разных ОС.
Разбор потока выполнения, стека и принципа работы python как интерпретируемого языка.
Курс построен на принципе максимального реализма, никаких ["apple", "banana"].
Все разделы курса помечены уровнем, который соответствует знанию и материалу (конечно,
уровень абстрактен, потому что реальной градации не существует, но все равно, хорошо отражает
уровень владения, сложность и погруженность в более сложные концепции и механизмы).
- Нужно уже быть программистом или иметь начальные знания об этом, чтоб пройти курс?
- Нет!
Что нужно от Вас для прохождения этого курса?
Внимательность.
Желание.
Компьютер.
Меня зовут Александр, я Full-Stack Web разработчик с большим опытом в разработке e-commerce продуктов.
Программирование не первая моя специальность, первое образование - провизор. Но после того как я сменил специализацию, то построил успешную карьеру в разработке, и в течении последних трех лет параллельно занимаюсь преподаванием.
Программирование предоставило мне новые возможности и радость заниматься любимым делом. Я буду рад помочь вам изучить программирование и стать разработчиком. Так как я понимаю проблемы и трудности студентов при освоении нового материала не связанного с основным(изначальным) родом деятельности, поэтому стараюсь объяснять всё на понятном языке, а не зачитывая все с учебного пособия.
Начнем?