fbpx

Каталог статей

Каталог статей для размещения статей информационного характера

Как выучить

Лучший способ выучить Python Массивное пошаговое руководство 2021 года

Лучший способ изучить Python [Массивное пошаговое руководство 2021 года]

Это один из тех языков, с которых я рекомендую начинать новичкам.

Но каков лучший способ изучения Python?

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

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

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

Как лучше всего изучать Python?

Лучший способ выучить Python – это проходить эти уровни по одному за раз. Прежде чем переходить к следующему уровню, убедитесь, что вы полностью поняли и получили большой практический опыт на каждом из них. Это означает, что вам нужно открыть свой ноутбук и написать код. Много кода. Сделайте это, и вы будете на пути к освоению Python!

Давайте начнем.

Уровень 0: Начало

Это уровень, с которого вы начинаете, если вы абсолютный новичок.

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

Если вы переходите с другого языка программирования, то вам следует перейти к уровню 1.

Курсы Python

Для уровня 1: посмотрите мой курс по объектно-ориентированному программированию на Udemy или на моем сайте (проверьте оба, чтобы узнать, нет ли распродажи).

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

Это означает, что эти концепции не являются чем-то исключительным для Python, но могут быть распространены и на другие языки программирования.

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

Шпаргалка по Python 3 для начинающих

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

Итак, что же представляют собой некоторые из этих общих концепций программирования, о которых я говорю?

Некоторые из этих фундаментальных понятий – переменные, типы данных, операции, функции, условия и циклы.

Если вы понимаете, что это за понятия, то переходите к первому уровню.

В противном случае позвольте мне дать вам очень краткое представление о том, что означают эти понятия.

Переменные

Переменные – это, по сути, хранилище данных в вашей программе.

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

Давайте рассмотрим пример.

В приведенном выше фрагменте Python мы определяем переменную msg, которая хранит значение Hello World!

Это позволяет нам позже вывести Hello World! на экран, просто используя имя переменной, хранящей это значение, вместо того, чтобы вводить значение Hello World! каждый раз, когда мы хотим его использовать.

Типы данных

Мы говорили о переменных как о хранилище данных, теперь давайте поговорим о данных.

В Python данные имеют типы.

Например, в приведенном выше фрагменте кода данные Hello World! имеют определенный тип, который в Python (и других языках программирования) называется string.

Строка – это просто последовательность символов.

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

К концу уровня 0 вы должны хорошо ориентироваться в этих типах данных и понимать, когда (и как) использовать их в своей программе.

Операции

Операции – это то, как вы манипулируете и изменяете данные в своей программе.

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

Это и есть жизненный цикл любой программы.

В Python и во всех языках программирования существуют как минимум арифметические операции, операции сравнения и логические операции.

Условные обозначения

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

Условные операторы с использованием if , if else или if elsif else дают вам такую возможность.

Вот пример оператора if-else в Python.

Функции

Функция – это, по сути, блок кода Python, который выполняется только тогда, когда его вызывают.

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

В Python вы определяете функцию с помощью ключевого слова def.

Вот пример программы hello world с использованием функции say_hello

Итак, это был пример фундаментальных концепций, которые вы должны изучить на этом уровне.

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

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

Вам нужно практиковаться в решении задач, поэтому запачкайте руки и начните решать простые задачи с помощью Python. Вы можете начать с решения задач Project Euler.

Я не могу не подчеркнуть важность освоения уровня 0.

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

Поэтому, несмотря на то, что это уровень 0, не относитесь к нему легкомысленно.

Уровень 1: Объектно-ориентированное программирование

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

Все в Python является объектом.

Вы либо уже слышали это, либо вам суждено это услышать .

Но подождите, что именно является объектом?

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

Одна из самых популярных парадигм программирования называется объектно-ориентированным программированием (ООП).

В объектно-ориентированном программировании объект относится к конкретному экземпляру класса.

Класс – это как чертеж состояния и действий, которые может выполнять объект.

Например, в Python класс Person может выглядеть следующим образом.

Объявленный выше класс описывает состояние и действия любого объекта Person.

Например, у любого объекта Person есть имя и возраст. Эти два поля определяют состояние объекта.

В терминологии ООП имя и возраст называются атрибутами объекта.

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

Мы называем get_name методом.

И этот метод, в дополнение к любым другим методам, которые мы определяем, определяет действия объекта.

Другими словами, объект Python имеет атрибуты и методы, которые определены в классе объекта.

Вот как создать объект Person

Объектно-ориентированное программирование – это, по сути, один из способов структурирования и проектирования кода.

Однако я хочу, чтобы вы поняли, что это не единственный и не обязательно лучший способ.

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

Шаг 1: Изучите концепции ООП

Как я уже говорил, ООП – это парадигма программирования, способ структурирования и проектирования кода.

Концепции ООП не являются эксклюзивными для Python, поэтому концепции, которые вы изучите, легко перейдут на любой другой язык программирования.

Некоторые примеры этих концепций – наследование, инкапсуляция и полиморфизм.

Поэтому прежде чем перейти к изучению ООП в Python, убедитесь, что вы понимаете эти понятия на абстрактном уровне.

Шаг 2: Узнайте о классах и объектах Python

На этом этапе вам нужно применить абстрактные концепции, которые вы изучили на предыдущем этапе, но конкретно в Python.

Начните писать классы и создавать объекты.

Пишите классы, которые наследуются от других классов, и исследуйте атрибуты и методы создаваемых объектов.

Шаг 3: Решайте проблемы Python с помощью ООП

Это очень важный шаг.

На этом этапе вы хотите научиться использовать ООП для проектирования и структурирования кода.

На самом деле, этот шаг – скорее искусство, чем наука. Это означает, что единственный способ стать лучше – это практика, практика и еще раз практика.

Снова продолжайте решать больше задач с помощью Python, но старайтесь структурировать свои решения объектно-ориентированным способом.

Чем больше вы будете практиковаться, тем легче вам будет работать с ООП.

Уровень 2: Одновременное и параллельное программирование

Времена одноядерных процессоров остались в прошлом.

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

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

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

Но позвольте мне прояснить одну вещь.

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

В такой ситуации я бы лично предпочел golang (или старый добрый C ).

Но поскольку это статья о Python, давайте сосредоточимся на Python.

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

Вот некоторые из этих концепций.

Взаимное исключение

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

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

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

Locks

Замки – это одна из различных реализаций взаимного исключения.

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

Тупик – это когда ваша программа полностью останавливается, потому что некоторые потоки не могут двигаться дальше, так как не могут получить блокировку.

Например, представьте, что поток A ждет, пока поток B освободит блокировку. В то же время поток B ждет от потока A освобождения другой блокировки, которая в данный момент находится у потока A.

В этой тяжелой ситуации ни поток A, ни поток B не могут двигаться дальше, и ваша программа оказывается в тупике!

Вот что такое тупик.

И она случается чаще, чем вы думаете.

Усугубляет ситуацию то, что это одна из самых сложных проблем для отладки.

Условия гонки

Как я уже говорил, состояние гонки – это ситуация, возникающая, когда доступ к общему ресурсу не защищен (например, блокировками).

Это может привести к катастрофическим неожиданным результатам.

Взгляните на этот пример.

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

Две функции inc и dec выполняются параллельно. inc() увеличивает значение x 1 миллион раз, а dec() уменьшает значение x 1 миллион раз.

Быстро просмотрев код, можно сделать вывод, что конечное значение x должно быть равно 0… но так ли это?

Вот что я получаю при выполнении приведенного выше кода.

Причина, по которой это происходит, заключается в том, что общий ресурс x не защищен (например, блокировками).

Параллельное программирование в Python

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

Во-первых, вы должны узнать, чем определение многопроцессорности в Python отличается от многопоточности (кстати, это совершенно не связано с потоками и процессами с точки зрения ОС).

Чтобы понять это различие между многопроцессорностью и многопоточностью с точки зрения Python, вам нужно будет изучить и понять глобальную блокировку интерпретатора (GIL).

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

Все эти модули предоставляют вам примитивы, необходимые для написания параллельных программ.

Уровень 3: Программирование сокетов

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

Но что если вы хотите писать код, который взаимодействует с другими машинами по сети?

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

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

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

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

Для начала работы выполните следующие три шага.

Шаг 1: Напишите программу Echo

В этом шаге вы будете использовать модуль сокетов Python для написания простого TCP-сервера на одной машине и TCP-клиента на другой.

Убедитесь, что это два разных компьютера и что оба они подключены к вашей домашней сети.

Как только вы освоитесь с написанием простых клиент-серверных приложений TCP, вы можете начать использовать модуль Python requests для отправки и получения HTTP-сообщений.

Это особенно полезно, поскольку подавляющее большинство веб-сервисов в наши дни предоставляют интерфейс HTTP API, с которым можно взаимодействовать программно. Например, Facebook, Twitter и Google maps имеют интерфейсы HTTP API, с которыми может взаимодействовать ваш код.

А если вы чувствуете себя более смелым и хотите пойти дальше, вы также можете скрести веб-страницы с помощью BeautifulSoup.

Шаг 3: Знай свои инструменты

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

Однако отладка сетевых программ немного отличается от отладки обычных программ.

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

Вот некоторые из наиболее популярных сетевых инструментов, которые вам понадобятся.

ping используется для проверки связи между вашей и другой машиной.

netstat – это универсальный сетевой инструмент, позволяющий, помимо прочего, контролировать входящие и исходящие сетевые соединения.

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

Wireshark – это хороший графический интерфейс, который делает практически все то же самое, что и tcpdump. Я рекомендую начать с Wireshark, прежде чем переходить к tcpdump, просто потому, что он немного удобнее в использовании.

И, как я уже говорил, чтобы понять, что означают все эти Get, SYN, SYN ACK, FIN, вам нужно сначала изучить основы сетевых технологий.

Уровень 4: Структуры данных и алгоритмы в Python

Если вы достигли этого уровня, похлопайте себя по плечу.

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

Однако чего-то не хватает.

Вы все еще недостаточно опытны в написании эффективного кода.

Что я имею в виду?

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

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

Не верите мне? Посмотрите на этот простой код, который вычисляет n-ое число Фибоначчи.

Код выглядит достаточно простым и понятным, верно?

Попробуйте использовать этот код для вычисления fib(100) [SPOILER ALERT: это займет очень много времени].

Теперь давайте сделаем простую модификацию кода.

На этот раз все, что потребовалось – это несколько миллисекунд, и вы получите ответ, который равен 354224848179261915075, если вам интересно .

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

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

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

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

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

Я действительно это имею в виду!

Уровень 5: Практика интервью по кодированию на Python

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

Вам нужно только пройти это страшное собеседование по кодированию.

На самом деле их несколько.

Если вы находитесь на этом уровне, я написал подробную статью о том, как подготовиться к собеседованию по кодингу.

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

Лучший способ пройти собеседование по кодированию – дать себе достаточно времени на подготовку.

Чем лучше вы подготовитесь, тем лучше пройдет ваше собеседование и тем больше вероятность того, что вы получите работу своей мечты.

Leetcode – это отличный ресурс с большим количеством вопросов для собеседования по кодингу.

Leetcode позволяет вам отправлять свои решения на языке Python на вопросы по кодированию и получать мгновенные отзывы о правильности и эффективности ваших решений.

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

В это время начинается уровень 6.

Уровень 6: продвинутый Python

Если вы хотите проникнуть на территорию свободного владения Python и поднять свои навыки на новый уровень, то я настоятельно рекомендую книгу “Fluent Python”.

Эта книга предполагает, что у вас уже есть твердое понимание основ Python.

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

Кроме того, вы узнаете и некоторые новые понятия.

Например, некоторые из новых понятий, которые вы узнаете в этой книге, следующие

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

Thissobjects в Python

Поток управления : охватывает тему генераторов, менеджеров контекста, корутинов и параллелизма

Метапрограммирование: по сути, это написание кода, который манипулирует кодом. Некоторые из обсуждаемых здесь тем – декораторы и мета-классы.

Факультатив 1: Библиотеки и фреймворки Python

Теперь все основы изучены, и вы – профессионал в Python.

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

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

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

1. Создание API-сервисов с помощью Python (Flask)

  1. В наши дни крупные и масштабируемые веб-приложения строятся путем создания множества небольших приложений, которые взаимодействуют друг с другом.
  2. Такая архитектура называется архитектурой микросервисов [звуковое предупреждение], а каждое из этих небольших приложений называется сервисом или микросервисом.
  3. Эти микросервисы могут взаимодействовать различными способами, но одним из самых популярных является HTTP.
  4. Другими словами, каждый из этих

Изучая Django, вы также познакомитесь с некоторыми концепциями, которые очень популярны в других веб-фреймворках на других языках, такими как MVC (model-view-controller) и ORM (object-relational mapper).

MVC – это способ структурирования и организации вашего веб-приложения, в то время как ORM – это техника, которая устраняет разрыв между объектно-ориентированным программированием и доступом к данным в базе данных.

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

Так что засучите рукава и вперед, создавайте свое первое веб-приложение .

3. Библиотеки машинного обучения

Python стал языком де-факто для машинного обучения и науки о данных.

Это неудивительно, учитывая зрелость библиотек Python для машинного обучения.

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

Если вы предпочитаете видеокурс, то вам стоит пройти курс Эндрю Нг по ML на Coursera.

Как только вы изучите основы, начните работать с этими библиотеками Python.

1- scikit-learn В этой библиотеке есть все под солнцем, когда речь идет об алгоритмах ML.

2- Tensorflow Еще один очень популярный фреймворк машинного обучения с открытым исходным кодом.

3- pandas Популярная библиотека для анализа данных.

Факультатив 2: Реализация Python (CPython)

Python является интерпретируемым языком.

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

Хотите посмотреть, как выглядит байт-код для простой программы Hello World?

Давайте создадим исходный файл helloworld.py

Вот как просмотреть байткод для приведенного выше исходного кода

Этот байткод затем будет интерпретирован интерпретатором. После этого он будет выполнен, и вы наконец увидите hello world на экране.

Существуют различные реализации Python для компилятора и интерпретатора.

Однако CPython является стандартной и наиболее широко используемой. Он полностью написан на языке C.

Это и интерпретатор, и компилятор, поскольку он компилирует код Python в байткод, а затем интерпретирует байткод в машинный язык.

Так почему я говорю о реализации Python?

Действительно ли вам нужно знать все эти тонкости Python, чтобы стать мастером Python?

Честно говоря, ответ – нет.

Но если вам интересно, как в Python реализованы списки, кортежи, функции и т.д., и если вы готовы выучить новый язык (C), то, возможно, вам стоит рассмотреть возможность участия в CPython.

Часто задаваемые вопросы

В: Трудно ли изучать Python?

Тяжело и легко – понятия относительные.

Могу вас заверить, что изучать Python легче, чем другие языки программирования, такие как C++, а я, кстати, люблю C++ .

Кроме того, большинство университетов используют Python в классе CS 101 только потому, что изучать Python легко и быстро.

В: Сколько времени нужно, чтобы выучить Python?

Если вы совсем новичок в программировании вообще, я бы дал себе 6 месяцев на изучение уровня 0 (основы) и уровня 1 (ООП).

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

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

В: Я новичок в программировании, могу ли я выучить Python за 24 часа или за неделю?

В: Что я могу делать с помощью Python?

В: Следует ли мне изучать Python 2 или Python 3?

Python 2 отжил свое и больше не будет поддерживаться.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *