training-web.ruГлавнаяКатегорииО насКарта сайтаПоискТёмная тема

Категории

Первые шаги Python программиста

Создано: 29 июня 2017Автор: Егор Астапов6583 просмотраСложность: легкий

Дошли руки до Питона. Я не гуру и покажу вам основы Python. Сила любого программиста в хорошем знании основ. Глупо изучать сложные разделы языка если вы не знаете элементарных вещей. Вам советую пройти мои шаги и начать самостоятельное развитие. Если вы в прошлом PHP программист, то python вы изучите сравнительно легко. Я покажу вам переход с PHP на Python. Многие примеры будут написаны на РHP и Python. Очень часто говорят, что питон - лёгкий язык. Не верьте ). Он сложно устроен. Написать сайт на питоне сложнее чем на PHP.

Плюсы Python

  1. Короткий код
  2. Отсутствие знака ; в конце строк
  3. Синтаксический сахар
  4. Новые типы данных. Это даёт широкий простой для оптимизации скриптов.
  5. Подключаемые модули
  6. Внутренние модули
  7. PIP - система управления пакетами
  8. Крутые фреймворки для сайтов и API: FastApi, Flask, Django
  9. Хорошо дружит с linux. Серверное программирование
  10. Процессы, многопоточность threading, асинхронные функции корутины async/await
  11. Десктопные приложений Qt
  12. Отлично подходит для data science. Большая часть приложений data science работает на питоне.

Минусы Python

  1. Сложное администрирование. Непростая настройка окружения для ваших скриптов.
  2. Отсутствие констант
  3. Сложное внедрение кода python на веб страницы.
  4. Мало документации на русском языке

Сотрудники яндекса показали как используют код python. Благодаря короткому синтаксису они смогли обработать значение переменной 7-10 функциями. Причём визуально обработка переменной вытянулась в одну строку. Посмотрите на пример. Символ \ - это перенос строки. У меня код просто не поместился в окне.

#!/usr/bin/python3
str = 'приехали автомобили: #1#, #2#, #3#'\
.replace('#1#', 'мерседес')\
.replace('#2#', 'ауди')\
.replace('#3#', 'бмв')
print(str)
'''вывод:приехали автомобили: мерседес, ауди, бмв'''

На PHP подобное решение выглядит довольно громоздко. Сам язык python не является экзотикой. На django написаны многие сервисы yandex. Python любят использовать в google.

До выхода PHP 7 python считался самым быстрым языком для веба. Теперь трудно судить что быстрее? Возможно через некоторое время выйдет более быстрая версия python. Смотрите pdf-версию схемы обучения python. Её можно увеличить и рассмотреть.

схема обучения Python

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

Вы должны решить, что именно вам учить? Вам может быть и не нужно ООП и сложные фреймворки? Вы можете легко писать скрипты при помощи процедурного стиля. Сам создатель питона Гвидо ван Россум рекомендует писать простым стилем и не усложнять скрипты.

Предлагаю вам на сайте stepik.org посмотреть 2 курса: Python: основы и применение, программирование на Python. Так у вас появится представление о Python. Потом советую почитать мои статьи.

Типы данных

Это фундаментальная часть языка python. На собеседованиях очень часто прокалываются люди на типах данных. Её надо знать очень хорошо! У меня есть страница Типы данных в Python. В ней есть красочная схема типов данных. Советую посмотреть.

  • коллекции
    • последовательности
      1. неизменяемые
        1. строка
        2. unicode (python 2.X)
        3. байтовая строка (python 3.X)
        4. кортеж
      2. изменяемые
        1. список
        2. байтовый массив (python 3.X/2.6+)
    • отображения
      1. словарь
    • множества
      1. множество
      2. фиксированное множество
  • числа
    1. целые
      1. целое
      2. длинное целое (python 2.X)
      3. булевское
    2. с плавающей точкой
    3. комплексное
    4. десятичное
    5. дробное
  • вызываемые
    1. функция
    2. генератор
    3. класс
    4. метод
      1. связанный
      2. не связанный
  • прочие
    1. модуль
    2. экземпляр
    3. файл
    4. None
    5. представление
  • внутренности (python 3.X/2.7)
    1. тип
    2. код
    3. фрейм
    4. трассировка стека. исключения (exceptions)

Функции

  1. внутренние
  2. анонимные lambda
  3. пользовательские
  4. замыкания
  5. генераторы
  6. декораторы

Циклы

  1. for
  2. while

Условные операторы

  1. if-else
  2. match

Модули

  1. numpy
  2. pillow
  3. itertools
  4. collection
  5. os
  6. sys
  7. json
  8. xml
  9. csv
  10. math
  11. re
  12. random
  13. configparser
  14. imghdr
  15. logging
  16. shutil
  17. pickle
  18. Базы данных
  19. кеширование
    • memcached
    • redis
  20. парсинг
  21. Время

ООП

  • Классы
    1. методы
    2. Волшебные/магические методы
      • геттеры
      • сеттеры
    3. переменные
    4. экземпляры класса
      • свойства
      • методы
    5. метаклассы

Фреймворки

  • синхронные
    1. Django. Это самый популярный фреймворк. Он легко осваивается. Из коробки доступна масса фишек: ORM, миграции, админка. Этот фреймворк пытаются сделать асинхронным, но пока не получается следать DjangoORM асинхронной.
    2. Flask. Достаточно простой фреймворк с голым каркасом. Второй фреймворк по популярности после джанго.
    3. Bottle
    4. Cherrypy
    5. Pyramid
  • асинхронные
    1. FastApi. Самый модный фреймворк на сегодняшний день. Он имеет голый каркас. Фреймворк довольно шустрый вам придётся одевать на каркас миграции, orm.
    2. LiteStar
    3. Twisted
    4. Masonite
    5. Tornado

Хочу вас предупредить, что набор модулей что вы видите - это только базовый набор. Модулей в разы больше. Фреймворков у python масса. Посмотрите на список фреймворков. Я думал их мало, но я ошибался ). Начните с самого простого. Основы - это то, с чего надо начать! Если смотреть на схему, то сложность нарастает сверху вниз. В схеме есть сложные разделы: ООП, фрейморки, парсинг. Парсинг сайтов и документов - сложное занятие. Тут без опыта тяжело писать код. Фреймворки - это особая тема для опытных программистов. Сначала изучите классы потом переходите к фреймворкам. Все фреймворки основаны на классах. Вы можете сделать вылазку и написать сайт на django. Если вы плохо знаете основы, то не сможете сделать сайт со сложный функционалом. В django активно применяются декораторы. Вы должны легко писать пользовательские функции. Регулярные выражения Python применяются чуть ли ни на каждом шагу. Любой фрейворк постоянно требует подключения различных модулей. Игра стоит свеч!

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

Если вы планируете стать программистом, то изучайте питон по моей схеме шаг за шагом. Будет трудно, но интересно. Этот путь тернист, но в конце пути вас не ждёт конец с лавровым венком. Вас ждет дорога без конца. Постоянно что-то новое появляется и мир программирования меняется. Раньше джанго был самым популярным языком, но потом Flask и FastAPi начали вытеснять лидера.

Если вы хотите быть data scientist, то вам придётся изучать типы данных и реляционные базы данных (постгрес) + нереляционные NoSQL базы специализированные для ваших задач. Мало того вам нужно выучить классы + фреймворки для вывода данных. Еще вам предстоит понимать и применять сложную математику. Будет сложно.

Предлагаю вам интересный ресурс для обучения: онлайн-курс по Python. Там есть бесплатные и платные уроки по python.

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

задания для развития Python

Заданий много. Знание одной теории - этого мало. Теория подкреплённая практикой - лучшее обучение. Постарайтесь сделать некоторые задачи из моей выдуманной схемы. На картинке вы не увидите слова написать скрипт. Вам придётся писать скрипт для выполнения задания. В фреймворке для выполнения задания вам придётся либо использовать один роут, либо писать отдельную команду.

Комментарии

111: 17 апреля 2018 13:14:40
По-моему, то, что мы видим - это не базовый набор а уровень мидл. Правда, чтобы претендовать на этот уровень - надо, как минимум, кроме вышеперечисленного владеть системой контроля версий, применять пакеты для тестирования.

Егор Астапов: 17 апреля 2018 13:35:00
Привет 111! Уровень сложности нарастает сверху вниз если смотреть на схему. Внизу самые сложные технологии. Я бы советовал сперва учить bash, а потом только браться за python 3.

Егор Астапов: 15 января 2025 12:02:12
Добавил картинку со схемой обучения. На картинке слева есть уровень: junor -> middle. Думаю, так будет понятнее. Еще добавил в конец статьи схему с заданиями для развития навыков. Тренируйтесь )

реклама