Как писать на python в visual studio
Перейти к содержимому

Как писать на python в visual studio

  • автор:

Как писать на Python в Visual Studio

Visual Studio — это мощная среда разработки, которая поддерживает множество языков программирования, в том числе Python. Чтобы начать работать с Python в Visual Studio, вам потребуется установить плагин Python для Visual Studio.

Установка плагина Python для Visual Studio

  1. Откройте Visual Studio
  2. Перейдите в меню «Инструменты» и выберите «Расширения и Обновления»
  3. Выберите «Онлайн» в левой панели
  4. В поисковой строке введите «Python для Visual Studio»
  5. Найдите плагин «Python для Visual Studio» и выберите «Установить»
  6. Перезапустите Visual Studio после установки

Создание нового проекта Python

  1. Откройте Visual Studio
  2. Перейдите в меню «Файл» и выберите «Новый проект»
  3. Выберите «Python» в категории «Языки»
  4. Выберите нужный шаблон проекта, например «Пустой проект Python»
  5. Укажите имя и место сохранения проекта
  6. Нажмите «Создать»

Написание кода Python

Теперь, когда вы создали проект Python, вы можете начать писать код. Для этого просто добавьте новый файл Python (.py) в проект и начните писать код.

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

Запуск кода

  1. Откройте файл с кодом Python
  2. Нажмите «F5» или перейдите в меню «Отладка» и выберите «Запустить отладку»
  3. Результаты выполнения кода будут отображены в окне «Отладчик»

Топ-10 IDE и редакторов кода для Python в 2021 году

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

Но редакторов и IDE много. Как выбрать? Как понять, какие функции важны? А какие из них важнее всего в вашем случае? Стоит ли платить за редактор или IDE? Сайт pythonist.ru разобрал все эти вопросы, рассматривая десятку самых лучших редакторов кода и IDE для Python (по состоянию на 2021 год).

Какие редакторы и IDE можно считать подходящими для разработки на Python?

Интегрированная среда разработки (Integrated Development Environment (IDE)) — программное обеспечение с очень обширным набором инструментов, использующихся для написания и тестирования кода. У каждой IDE свой арсенал самых полезных инструментов, но среди них обязательно будет текстовый редактор для написания кода, встроенные инструменты для автоматической компиляции и отладчик для обнаружения возможных ошибок.

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

Редакторы кода — это легковесные альтернативы IDE. В них есть текстовый редактор с автоматической подсветкой синтаксиса и простой отладчик для поиска багов, но нет сложных инструментов, которые можно найти в IDE.

Необходимый функционал в редакторах кода и IDE для работы с Python

  • Подсветка синтаксиса. Автоматическая подсвета разных видов синтаксиса необходима для обеспечения наилучшей читаемости кода. Например, все имена переменных подсвечиваются белым, ключевые слова — оранжевым и т. д. Благодаря этому вы даже при беглом просмотре кода можете понять, что в нем происходит.
  • Автоматическое форматирование кода. IDE и редакторы с поддержкой Python могут автоматически проставлять отступы, добавлять двоеточия, вставлять пропущенные закрывающие скобки, и все это — в соответствии со стилевыми правилами написания кода на Python. Это означает, что вам не придется тратить время на форматирование, да и на написание кода будет уходить меньше времени.
  • Отладка. В разных инструментах разный подход к отладке, но будет хорошо иметь возможность по крайней мере пошагово отслеживать изменения в коде. В идеале вам нужен инструмент, который будет указывать на потенциальные ошибки и подсвечивать их еще до запуска кода.
  • Автоматизация сборки. Ваш инструмент должен позволять писать код на Python и запускать его в том же окне. Копипаст кода из редактора во внешние компиляторы (для запуска) — это дополнительное время и лишняя возня.
  • Сохранение и перезагрузка. Все IDE и редакторы кода должны иметь функцию сохранения и перезагрузки кода в сохраненном состоянии. В самых лучших инструментах помимо этого будет и контроль версий, чтобы при необходимости вы могли вернуться к предыдущим вариантам сборки.

10 самых лучших IDE и редакторов кода для Python

При выборе IDE или редактора приходится идти на компромиссы или в степени кастомизации, или в скорости этой самой кастомизации. В нашем списке инструменты построены от наименее до наиболее настраиваемых.

IDE и редакторы кода общего назначения

Atom (редактор кода)

Atom — это редактор, готовый «из коробки». Он имеет открытый исходный код и элегантный вид. Баланс производительности и кастомизации у него, как в Sublime, а настройка делается быстро. В основе редактора лежит фронтенд-фреймворк Electron — инструмент для создания настольных приложений с использованием JS, CSS и HTML.

В Atom есть встроенная поддержка любимых функций разработчиков: автоматического дополнения кода и поиска/вставки. Сам редактор разработан GitHub, так что не удивительно, что в нем есть встроенный функционал для интеграции с GitHub и Git.

Atom допускает применение пользовательских плагинов. Вместе с тем вы можете с легкостью подобрать и установить нужные плагины при помощи платформы с бесплатными пакетами. Эти плагины помогут вам расширить функционал редактора в соответствии с вашими нуждами.

Основной недостаток Atom — он не такой отполированный, как многие другие редакторы кода. Со времени первого выпуска выходило много обновлений, но редактор все равно периодически падает. К сожалению, с тех пор, как в 2018 году Microsoft приобрела GitHub, выход обновлений заметно замедлился.

Достоинства
  • Можно использовать из коробки
  • Легковесность и кастомизация при помощи плагинов
  • Легкая интеграция плагинов
Недостатки
  • Долго загружается при включении
  • Есть проблемы с производительностью
  • Запускается как JavaScript-процесс
  • Некоторые необходимые функции (отладка, сборка кода и т. п.) добавляются при помощи плагинов.
Use Case

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

Codespaces (редактор кода)

Codespaces — новый облачный кроссплатформенный редактор кода, разработанный Microsoft и выпущенный в мае 2020 года. Пользоваться им можно в браузере.

В Codespaces вы найдете браузерный текстовый редактор, поддержку Git-репозиториев и расширений, а также встроенный интерфейс командной строки. Любопытно, что этим редактором можно пользоваться и офлайн — с обновлением после подключения к интернету.

Редактор совершенно бесплатный, но в будущем будет иметь платные опции.

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

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

Достоинства
  • Хорош для командных проектов
  • Можно использовать где угодно, на любом девайсе
  • Не нужно устанавливать или настраивать
  • Готовая интеграция с GitHub
Недостатки
  • Новый и неотшлифованный
  • Ограничение в 5 рабочих пространств
  • Ограниченная кастомизация
Use Case

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

Visual Studio (IDE)

Visual Studio — IDE общего назначения, поддерживающая Python при помощи плагина Python Tools for Visual Studio (PTVS).

Visual Studio имеет богатый функционал, встроенную поддержку Git, встроенный терминал, полный набор инструментов для юнит-тестирования. Как и в Atom, есть маркетплейс с расширениями.

Visual Studio поставляется с Intellisense — одной из самых лучших на сегодняшний день систем автодополнения. При помощи плагинов можно добавить поддержку инструментов веб-разработки, таких как Flask или Django.

Есть бесплатная версия (Community) и платная (Business/Enterprise) — с дополнительными плюшками вроде поддержки пользователя и инструментов DevOps.

Visual Studio также имеет легковесный редактор кода — Visual Studio Code (VS Code).

Достоинства
  • Богатый функционал из коробки
  • Подходит для многих языков и платформ
  • Легкое добавление плагинов
  • Автодополнение Intellisense
Недостатки
  • Дополнительные ресурсы — платные
  • Слишком большая «зона покрытия», если вы планируете пользоваться только для Python-программирования
  • Недоступность для ОС Linux
Use Case

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

Sublime Text 3 (редактор кода)

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

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

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

Основной недостаток Sublime — его цена ($80).

Достоинства
  • Высокая настраиваемость при помощи плагинов
  • Несравненная скорость
  • Отлично подходит для одновременной работы над несколькими проектами.
Недостатки
  • Цена в $80
  • В ванильной версии не хватает функционала
  • Сложно добавлять плагины
Use Case

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

Vim (редактор кода)

Vim — классический редактор кода, созданный как преемник редактора Vi. Он по умолчанию установлен в Mac OS и Linux, также его можно скачать и установить в Windows. Этот редактор известен крутой кривой изучения и тем, что результаты все же стоят затраченных усилий. Он по-прежнему обновляется, но кардинальные изменения происходят крайне редко.

По умолчанию Vim практически не имеет пользовательского интерфейса, пользоваться им нужно в командной строке. Это означает, что при помощи VIMscript вы сможете кастомизировать в этом инструменте практически что угодно, от внешнего вида до сочетаний клавиш. Благодаря этой особенности, Vim — потенциально самый настраиваемый и производительный редактор кода.

Научившись пользоваться Vim, вы получите очень эффективный инструмент, но переход к работе исключительно с клавиатурой будет нелегким (если только вы не опытный пользователь Vi). Настроить что-то при помощи VIMscript тоже непросто, потому что для этого фактически нужно создать отдельный программистский проект еще до начала работы с редактором!

Достоинства
  • Использование в работе исключительно клавиатуры очень повышает скорость программирования (как только все оптимизируете)
  • Можно запрограммировать собственные сочетания клавиш
  • Полная кастомизация при помощи VIMscripts
  • Доступен в Mac и Linux по умолчанию
Недостатки
  • Общеизвестно, что новичкам трудно овладеть этим инструментом
  • Кастомизация — сложный процесс
Use Case

Этот редактор прекрасно подойдет тем, кто уже умеет пользоваться Vi и привык все делать при помощи клавиатуры. Также Vim — прекрасный выбор для разработчика, который хочет иметь самый настраиваемый и эффективный редактор и готов ради этого примириться с крутой кривой изучения.

IDE, заточенные под Python

IDLE (IDE)

IDLE — IDE, устанавливаемая с Python по умолчанию. В ней есть весь основной инструментарий: окно с оболочкой Python, автодополнение, подсветка синтаксиса, умные отступы и базовый отладчик.

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

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

Достоинства
  • Поставляется с Python
  • Проста в освоении и использовании
  • Имеет все самые необходимые инструменты
Недостатки
  • Плохая производительность в крупных проектах
  • Не настраивается визуально
  • Нельзя добавлять функционал
Use Case

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

Thonny (IDE)

Thonny — бесплатная IDE, спроектированная в качестве идеальной среды для начинающих. Пользовательский интерфейс прост. Встроены подсветка синтаксиса, автодополнение, отладчик и автоформатирование.

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

Недостаток Thonny в отсутствии продвинутых функций, которые есть в других IDE, например в PyCharm. Также нет специализированных инструментов для специфических приложений, доступных в Spyder. Из-за этого вам в конечном итоге придется перейти на другую IDE, как только ваши программы станут более сложными.

Достоинства
  • Простой, не отвлекающий пользовательский интерфейс
  • Настройка через меню, а не через файлы
  • Основные функции оптимизированы для начинающих
Недостатки
  • Нет специализированных инструментов
  • Производительность не такая хорошая, как в более продвинутых IDE
Use Case

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

Spyder (IDE)

Spyder — IDE Python, созданная специально для разработчиков, занимающихся наукой о данных и машинным обучением. Она входит в Anaconda наряду с популярными библиотеками Python ( Scikit-learn, Numpy, Matplotlib, Scipy и Pandas).

Spyder имеет автодополнение, мощный отладчик, оболочку iPython и ограниченные инструменты для визуализации данных.

В Spyder меньше функций, чем, скажем, в PyDev. Эта IDE фокусируется скорее на предоставлении простого, легкого в использовании инструментария для не-разработчиков.

Достоинства
  • Простая установка и интеграция с основными библиотеками
  • Инструменты для работы с data science
  • Мощные инструменты отладки для помощи не-разработчикам
Недостатки
  • Функционал, не связанный с data science, ограничен
  • Мало опций для кастомизации
Use Case

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

PyDev (IDE)

PyDev — это IDE-плагин для Eclipse, популярной Java IDE для open source разработки. PyDev поставляется со всеми встроенными элементами управления Eclipse и добавляет поддержку автодополнения, интерактивной консоли и отладки для Python.

PyDev также интегрирована с Django с его инструментами для веб-разработки. Это одна из немногих IDE, имеющих поддержку Jython и Cython.

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

Достоинства
  • Эту IDE легко освоят пользователи Eclipse
  • Оптимизация для веб-разработки на Django
  • Поддержка для Jython и Cython
Недостатки
  • Ограниченный функционал, поскольку это все-таки простой плагин
  • Освоить Eclipse непросто
Use Case

PyDev подойдет разработчику, который пользуется Python как вторичным языком для веб-разработки или участия в open-source и имеет опыт работы с Eclipse.

PyCharm (IDE)

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

PyCharm уже из коробки имеет все самые лучшие инструменты: контроль версий, автодополнение, подсветку ошибок, рефакторинг кода и т. д. В отличие от других IDE, в PyCharm можно начинать писать код сразу же после загрузки.

Часто отмечается особая полезность предлагаемого PyCharm кода (по сравнению с другими IDE).

Бесплатная версия PyCharm более легковесна и оптимизирована для data science. А платная ($100-200 в год) включает инструменты для веб-разработки и Python-приложения.

Кроме того, для работы PyCharm требуется много VRAM. Использовать ее на старых машинах не получится.

Достоинства
  • Уже установлен весь основной продвинутый функционал
  • Не требуется настройка
  • Инструментарий для Python-разработки любого рода
Недостатки
  • «Кусачая» цена версии с полным функционалом
  • Производительность очень зависит от возможностей вашей машины
  • Ограниченная кастомизация
Use Case

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

Также стоит упомянуть

  • Emacs. Можно использовать для разработки на Python, но это довольно старый инструмент, из-за чего там нет более современных функций.
  • Jupyter Notebooks. Простой инструмент, оптимизированный для data science и графических представлений, но уж слишком специализированный, чтобы войти в наш список.

У вас есть свой любимый редактор для программирования на Python, не вошедший в наш список? Предлагайте в комментариях!

Как писать питонический код: три рекомендации и три книги

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

Что значит «питонический»?

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

Философия Python раскрывается в The Zen of Python Тима Питерса, доступной в любом Python по команде import this в REPL:

>>> import this The Zen of Python, by Tim Peters Beautiful is better than ugly. Explicit is better than implicit. Simple is better than complex. Complex is better than complicated. Flat is better than nested. Sparse is better than dense. Readability counts. Special cases aren't special enough to break the rules. Although practicality beats purity. Errors should never pass silently. Unless explicitly silenced. In the face of ambiguity, refuse the temptation to guess. There should be one-- and preferably only one --obvious way to do it. Although that way may not be obvious at first unless you're Dutch. Now is better than never. Although never is often better than *right* now. If the implementation is hard to explain, it's a bad idea. If the implementation is easy to explain, it may be a good idea. Namespaces are one honking great idea -- let's do more of those!

Начинающих в Python больше всего раздражает красота Zen of Python. В Zen передаётся дух того, что значит «питонический» — и без явных советов. Вот первый принцип дзена Python: «Красивое лучше, чем уродливое». Согласен на 100%! Но как сделать красивым мой некрасивый код? Что это вообще такое — «красивый код»?

Сколь бы ни раздражала эта неоднозначность, именно она делает Zen of Python таким же актуальным, как и в 1999 году, когда Тим Питерс написал этот набор руководящих принципов. Они помогают понять, как отличать питонический и непитонический код, и дают ментальную основу принятия собственных решений.

Каким же будет определение слова «питонический»? Лучшее найденное мной определение взято из ответа на вопрос «Что означает «питонический» В этом ответе питонический код описывается так:

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

Из этого делаем два ключевых вывода:

  1. Слово «питонический» связано скорее со стилем, чем с синтаксисом. Хотя идиомы Python часто имеют последствия за рамками чисто стилистического выбора, в том числе повышение производительности кода.
  2. То, что считается «питоническим», определяется сообществом Python.

Итак, у нас сложилось хотя бы какое-то представление о том, что имеют в виду программисты на Python, называя код «питоническим». Рассмотрим три конкретных и доступных способа написания более питонического кода.

1. Подружитесь с PEP8

PEP8 — это официальное руководство по стилю кода Python. PEP расшифровывается как Python Enhancement Proposal («Предложение по улучшению Python»). Это документы, предлагающие новые особенности языка. Они образуют официальную документацию особенности языка, принятие или отклонение которой обсуждается в сообществе Python. Следование PEP8 не сделает код абсолютно «питоническим», но способствует узнаваемости кода для многих Python-разработчиков.

В PEP8 решаются вопросы, связанные с символами пробелов. Например, использование четырёх пробелов для отступа вместо символа табуляции или максимальной длиной строки: согласно PEP8, это 79 символов, хотя данная рекомендация, вероятно, самая игнорируемая.

Первое, что стоит усвоить из PEP8 новичкам, — это рекомендации и соглашения по именованию. Например, следует писать имена функций и переменных в нижнем регистре и с подчёркиваниями между словами lowercase_with_underscores:

# Correct seconds_per_hour = 3600 # Incorrect secondsperhour = 3600 secondsPerHour = 3600

Имена классов следует писать с прописными первыми буквами слов и без пробелов, вот так: CapitalizedWords:

# Correct class SomeThing: pass # Incorrect class something: pass class some_thing: pass

Константы записывайте в верхнем регистре и с подчёркиваниями между словами: UPPER_CASE_WITH_UNDERSCORES:

# Correct PLANCK_CONSTANT = 6.62607015e-34 # Incorrect planck_constant = 6.6260715e-34 planckConstant = 6.6260715e-34

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

Запоминать все соглашения PEP8 не нужно: найти и устранить проблемы PEP8 в коде могут помочь такие инструменты, как flake8. Установите flake8 с помощью pip:

# Linux/macOS $ python3 -m pip install flake8 # Windows $ python -m pip install flake8

flake8 можно использовать как приложение командной строки для просмотра файла Python на предмет нарушений стиля. Допустим, есть файл myscript.py с таким кодом:

def add( x, y ): return x+y num1=1 num2=2 print( add(num1,num2) )

При запуске на этом коде flake8 сообщает, как и где именно нарушается стиль:

$ flake8 myscript.py myscript.py:1:9: E201 whitespace after '(' myscript.py:1:11: E231 missing whitespace after ',' myscript.py:1:13: E202 whitespace before ')' myscript.py:4:1: E305 expected 2 blank lines after class or function definition, found 1 myscript.py:4:5: E225 missing whitespace around operator myscript.py:5:5: E225 missing whitespace around operator myscript.py:6:7: E201 whitespace after '(' myscript.py:6:16: E231 missing whitespace after ',' myscript.py:6:22: E202 whitespace before ')'

В каждой выводимой строке flake8 сообщается, в каком файле и в какой строке проблема, в каком столбце строки начинается ошибка, номер ошибки и её описание. Используйте эти обозначения, flake8 можно настроить на игнорирование конкретных ошибок:

Как читать вывод flake8

Для проверки качества кода с помощью flake8 вы даже можете настроить редакторы, например VS Code. Пока вы пишете код, он постоянно проверяется на нарушения PEP8. Когда обнаруживается проблема, во flake8 под частью кода с ошибкой появляется красная волнистая линия, найденные ошибки можно увидеть во вкладке встроенного терминала Problems:

Проверки flake8 в Visual Studio Code

flake8 — отличный инструмент для поиска связанных с нарушением PEP8 ошибок, но исправлять их придётся вручную. А значит, будет много работы. К счастью, весь процесс автоматизируемый. Автоматически форматировать код согласно PEP можно с помощью инструмента под названием Black.

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

Установите black c помощью pip:

# Linux/macOS $ python3 -m pip install black # Windows $ python -m pip install black

После установки командой black —check можно посмотреть, будут ли black изменять файл:

$ black --check myscript.py would reformat myscript.py Oh no! �� �� �� 1 file would be reformatted.

Чтобы увидеть разницу после изменений, используйте флаг —diff:

$ black --diff myscript.py --- myscript.py 2022-03-15 21:27:20.674809 +0000 +++ myscript.py 2022-03-15 21:28:27.357107 +0000 @@ -1,6 +1,7 @@ -def add( x, y ): - return x+y +def add(x, y): + return x + y -num1=1 -num2=2 -print( add(num1,num2) ) + +num1 = 1 +num2 = 2 +print(add(num1, num2)) would reformat myscript.py All done! ✨ �� ✨ 1 file would be reformatted.

Чтобы автоматически отформатировать файл, передайте его имя команде black:

$ black myscript.py reformatted myscript.py All done! ✨ �� ✨ 1 file reformatted. # Show the formatted file $ cat myscript.py def add(x, y): return x + y num1 = 1 num2 = 2 print(add(num1, num2))

Чтобы проверить совместимость с PEP8, снова запустите flake8 и посмотрите на вывод:

# No output from flake8 so everything is good! $ flake8 myscript.py

При работе с black следует иметь в виду, что максимальная длина строки по умолчанию в нём — это 88 символов. Это противоречит рекомендации PEP8 о 79 символах, поэтому при использовании black в отчёте flake8 вы увидете ошибки о длине строки.

Многие разработчики Python используют 88 знаков вместо 79, а некоторые — строки ещё длиннее. Можно настроить black на 79 символов, или flake8 — на строки большей длины.

Важно помнить, что PEP8 — это лишь набор рекомендаций, хотя многие программисты на Python относятся к ним серьёзно. PEP8 не применяется в обязательном порядке. Если в нём есть что-то, с чем вы категорически не согласны, вы вправе это игнорировать! Если же вы хотите строго придерживаться PEP8, инструменты типа flake8 и black сильно облегчат вам жизнь.

2. Избегайте циклов в стиле C

В таких языках, как C или C++, отслеживание индексной переменной при переборе массива — обычное дело. Поэтому программисты, которые перешли на Python из C или C++, при выводе элементов списка нередко пишут:

>>> names = ["JL", "Raffi", "Agnes", "Rios", "Elnor"] >>> # Using a `while` loop >>> i = 0 >>> while i < len(names): . print(names[i]) . i += 1 JL Raffi Agnes Rios Elnor >>> # Using a `for` loop >>> for i in range(len(names)): . print(names[i]) JL Raffi Agnes Rios Elnor

Вместо итерации можно перебрать все элементы списка сразу:

>>> for name in names: . print(name) JL Raffi Agnes Rios Elnor

Этим вторая рекомендация не ограничивается: она намного глубже простого перебора элементов списка. Такие идиомы Python, как списковые включения, встроенные функции (min(), max() и sum()) и методы объектов, может помочь вывести ваш код на новый уровень.

Отдавайте предпочтение списковым включениям, а не простым циклам for

Обработка элементов массива и сохранение результатов в новом — типичная задача программирования. Допустим, нужно преобразовать список чисел в список их квадратов. Избегая циклов в стиле C, можно написать:

>>> nums = [1, 2, 3, 4, 5] >>> squares = [] >>> for num in nums: . squares.append(num ** 2) . >>> squares [1, 4, 9, 16, 25]

Но более питонически применить списковое включение:

>>> squares = [num ** 2 for num in nums] # >> squares [1, 4, 9, 16, 25]

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

Вот так я обычно пишу списковые включения:

  1. Начинаю с создания литерала пустого списка:
    [].
  2. Первым в списковое включение помещаю то, что обычно идёт в метод .append()при создании списка с помощью цикла for:
    [num ** 2].
  3. И, наконец, помещаю в конец списка заголовок цикла for:
    [num ** 2 for num in nums].

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

Используйте встроенные функции, такие как min(), max() и sum()

Ещё одна типичная задача программирования — это поиск минимального или максимального значения в массиве чисел. Найти наименьшее число в списке можно с помощью for:

>>> nums = [10, 21, 7, -2, -5, 13] >>> min_value = nums[0] >>> for num in nums[1:]: . if num < min_value: . min_value = num . >>> min_value -5

Но более «питонически» применять встроенную функцию min():

>>> min(nums) -5

То же касается нахождения наибольшего значения в списке: вместо цикла применяется встроенная функция max():

>>> max(nums) 21

Чтобы найти сумму чисел списка, написать цикл for можно, но более питонически воспользоваться sum():

>>> # Not Pythonic: Use a `for` loop >>> sum_of_nums = 0 >>> for num in nums: . sum_of_nums += num . >>> sum_of_nums 44 >>> # Pythonic: Use `sum()` >>> sum(nums) 44

Также sum() полезна при подсчёте количества элементов списка, для которых выполняется некое условие. Например, вот цикл for для подсчёта числа начинающихся с буквы A строк списка:

>>> capitals = ["Atlanta", "Houston", "Denver", "Augusta"] >>> count_a_capitals = 0 >>> for capital in capitals: . if capital.startswith("A"): . count_a_capitals += 1 . >>> count_a_capitals 2

Функция sum() со списковым включением сокращает цикл for до одной строки:

>>> sum([capital.startswith("A") for capital in capitals]) 2

Красота! Но ещё более питонической эту строку сделает замена спискового включения на выражение-генератор. Убираем скобки списка:

>>> sum(capital.startswith("A") for capital in capitals) 2

Как именно работает код? И списковое включение, и выражение-генератор возвращают итерируемый объект со значением True, если строка в списке capitals начинается с буквы A, и False — если это не так:

>>> [capital.startswith("A") for capital in capitals] [True, False, False, True]

В Python True и False — это завуалированные целые числа. True равно 1, а False — 0:

>>> isinstance(True, int) True >>> True == 1 True >>> isinstance(False, int) True >>> False == 0 True

Когда в sum() передаётся списковое включение или выражение-генератор, значения True и False считаются 1 и 0 соответственно. Всего два значения True и два False, поэтому сумма равна 2.

Использование sum() для подсчёта числа удовлетворяющих какому-то условию элементов списка подчёркивает важность понятия «питонический». Я нахожу такое применение sum() очень питонически. Ведь с sum() используется несколько особенностей этого языка и создаётся, на мой взгляд, лаконичный и удобный для восприятия код. Но, возможно, не каждый разработчик на Python со мной согласится.

Можно было бы возразить, что в этом примере нарушается один из принципов Zen of Python: «Явное лучше неявного». Ведь не очевидно, что True и False — целые числа и что sum() вообще должна работать со списком значений True и False. Чтобы освоить это применение sum(), нужно глубоко понимать встроенные типы Python.

Узнать больше о True и False как целых числах, а также о других неожиданных фактах о числах в Python можно из статьи 3 Things You Might Not Know About Numbers in Python («3 факта о числах в Python, которых вы могли не знать»).

Жёстких правил, когда называть и не называть код питоническим, нет. Всегда есть некая серая зона. Имея дело с примером кода, который может находиться в этой серой зоне, руководствуйтесь здравым смыслом. Для удобства восприятия всегда применяйте err и не бойтесь обращаться за помощью.

3. Используйте правильную структуру данных

Большая роль при написании чистого, питонического кода для конкретной задачи отводится выбору подходящей структуры данных. Python называют языком «с батарейками в комплекте». Некоторые батарейки из комплекта Python — это эффективные, готовые к применению структуры данных.

Используйте словари для быстрого поиска

Вот CSV-файл clients.csv с данными по клиентам:

first_name,last_name,email,phone Manuel,Wilson,mwilson@example.net,757-942-0588 Stephanie,Gonzales,sellis@example.com,385-474-4769 Cory,Ali,coryali17@example.net,810-361-3885 Adam,Soto,adams23@example.com,724-603-5463

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

Используя объект DictReader из модуля csv, можно прочитать каждую строку файла как словарь:

>>> import csv >>> with open("clients.csv", "r") as csvfile: . clients = list(csv.DictReader(csvfile)) . >>> clients [, , , ]

clients — это список словарей. Поэтому, чтобы найти клиента по адресу почты, например sellis@example.com, нужно перебрать список и сравнить почту каждого клиента с целевой почтой, пока не будет найден нужный клиент:

>>> target = "sellis@example.com" >>> phone = None >>> for client in clients: . if client["email"] == target: . phone = client["phone"] . break . >>> print(phone) 385-474-4769

Но есть проблема: перебор списка клиентов неэффективен. Если в файле много клиентов, на поиск клиента с совпадающим адресом почты у программы может уйти много времени. А сколько теряется времени, если такие проверки проводятся часто!

Более питонически сопоставить клиентов с их почтами, а не хранить клиентов в списке. Для этого отлично подойдёт словарное включение:

>>> with open("clients.csv", "r") as csvfile: . # Use a `dict` comprehension instead of a `list` . clients = . >>> clients

Словарные включения очень похожи на списковые включения:

  1. Я начинаю с создания пустого словаря:
    <>.
  2. Затем помещаю туда разделённую двоеточием пару «ключ — значение»:
    .
  3. И пишу выражение с for, которое перебирает все строки в CSV:
    .

Вот это словарное включение, преобразованное в цикл for:

>>> clients = <> >>> with open("clients.csv", "r") as csvfile: . for row in csv.DictReader(csvfile): . clients[row["email"]] = row["phone"]

С этим словарём clients вы можете найти телефон клиента по его почте без циклов:

>>> target = "sellis@example.com" >>> clients[target] 385-474-4769

Этот код не только короче, но и намного эффективнее перебора списка циклом. Но есть проблема: если в clients нет клиента с искомой почтой, поднимается ошибка KeyError:

>>> clients["tsanchez@example.com"] Traceback (most recent call last): File "", line 1, in KeyError: 'tsanchez@example.com'

Поэтому, если клиент не найден, можно перехватить KeyError и вывести значение по умолчанию:

>>> target = "tsanchez@example.com" >>> try: . phone = clients[target] . except KeyError: . phone = None . >>> print(phone) None

Но более питонически применять метод словаря .get(). Если пара с ключом существует, этот метод возвращает значение пары, иначе возвращается None:

>>> clients.get("sellis@example.com") '385-474-4769'

Сравним решения выше:

import csv target = "sellis@example.com" phone = None # Un-Pythonic: loop over a list with open("clients.csv", "r") as csvfile: clients = list(csv.DictReader(csvfile)) for client in clients: if client["email"] == target: phone = client["phone"] break print(phone) # Pythonic: lookup in a dictionary with open("clients.csv", "r") as csvfile: clients = phone = clients.get(target) print(phone)

Питонический код короче, эффективнее и не менее удобен для восприятия.

Используйте операции над множествами

Множества — это настолько недооценённая структура данных Python, что даже разработчики среднего уровня склонны их игнорировать, упуская возможности. Пожалуй, самое известное применение множеств в Python — это удаление повторяющихся в списке значений:

>>> nums = [1, 3, 2, 3, 1, 2, 3, 1, 2] >>> unique_nums = list(set(nums)) >>> unique_nums [1, 2, 3]

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

Вот придуманный, но реалистичный пример. У владельца магазина есть CSV-файл клиентов с адресами их почты. Снова возьмём файл clients.csv. Есть также CSV-файл заказов за последний месяц orders.csv, тоже с адресами почты:

date,email,items_ordered 2022/03/01,adams23@example.net,2 2022/03/04,sellis@example.com,3 2022/03/07,adams23@example.net,1

Владельцу магазина нужно отправить купон на скидку каждому клиенту, который в прошлом месяце ничего не заказывал. Для этого он может считать адреса почты из файлов clients.csv и orders.csv и отфильтровать их списковым включением:

>>> import csv >>> # Create a list of all client emails >>> with open("clients.csv", "r") as clients_csv: . client_emails = [row["email"] for row in csv.DictReader(clients_csv)] . >>> # Create a list of emails from orders >>> with open("orders.csv") as orders_csv: . order_emails = [row["email"] for row in csv.DictReader(orders_csv)] . >>> # Use a list comprehension to filter the clients emails >>> coupon_emails = [email for email in clients_emails if email not in order_emails] >>> coupon_emails ["mwilson@example.net", "coryali17@example.net"]

Код нормальный и выглядит вполне питонически. Но что, если каждый месяц клиентов и заказов будут миллионы? Тогда при фильтрации почты и определении, каким клиентам отправлять купоны, потребуется перебор всего списка client_emails. А если в файлах client.csv и orders.csv есть повторяющиеся строки? Бывает и такое.

Более питонически считать адреса почты клиентов и заказов в множествах и отфильтровать множества почтовых адресов клиентов оператором разности множеств:

>>> import csv >>> # Create a set of all client emails using a set comprehension >>> with open("clients.csv", "r") as clients_csv: . client_emails = . >>> # Create a set of emails frp, orders using a set comprehension >>> with open("orders.csv", "r") as orders_csv: . order_emails = . >>> # Filter the client emails using set difference >>> coupon_emails = client_emails - order_emails >>> coupon_emails

Этот подход намного эффективнее предыдущего: адреса клиентов перебираются только один раз, а не два. Вот ещё одно преимущество: все повторы почтовых адресов из обоих CSV-файлов удаляются естественным образом.

Три книги, чтобы писать более питонический код

За один день писать чистый питонический код не научиться. Нужно изучить много примеров кода, пробовать писать собственный код и консультироваться с другими разработчиками Python. Чтобы облегчить вам задачу, я составил список из трёх книг, очень полезных для понимания питонического кода. Все они написаны для программистов уровня выше среднего или среднего.

Если вы новичок в Python (и тем более в программировании в целом), загляните в мою книгу Python Basics: A Practical Introduction to Python 3 («Основы Python: Практическое введение в Python 3»).

Python Tricks Дэна Бейдера

Короткая и приятная книга Дэна Бейдера Python Tricks: A Buffet of Awesome Python Features («Приёмы Python: набор потрясающих функций Python») — отличная отправная точка для начинающих и программистов, желающих больше узнать о том, как писать питонический код.

С Python Tricks вы изучите шаблоны написания чистого идиоматичного кода Python, лучшие практики для написания функций, эффективное применение функционала объектно-ориентированного программирования Python и многое другое.

Effective Python Бретта Слаткина

Effective Python («Эффективный Python») Бретта Слаткина — это первая книга, которую я прочитал после изучения синтаксиса Python. Она открыла мне глаза на возможности питонического кода.

В Effective Python содержится 90 способов улучшения кода Python. Одна только первая глава Python Thinking («Мыслить на Python») — это кладезь хитростей и приёмов, которые будут полезными даже для новичков, хотя остальная часть книги может быть для них трудной.

Fluent Python Лучано Рамальо

Если бы у меня была только одна книга о Python, это была бы книга Лучано Рамальо Fluent Python («Python. К вершинам мастерства»). Рамальо недавно обновил свою книгу до современного Python. Сейчас можно оформить предзаказ. Настоятельно рекомендую сделать это: первое издание устарело.

Полная практических примеров, чётко изложенная книга Fluent Python — отличное руководство для всех, кто хочет научиться писать питонический код. Но имейте в виду, что Fluent Python не предназначена для новичков. В предисловии к книге написано:

«Если вы только изучаете Python, эта книга будет трудной для вас».

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

Опытные программисты на Python извлекут из этой книги большую пользу.

А мы поможем вам прокачать скиллы или с самого начала освоить профессию в IT, актуальную в любое время:

  • Профессия Fullstack-разработчик на Python
  • Профессия Data Scientist

Краткий каталог курсов и профессий

Data Science и Machine Learning

  • Профессия Data Scientist
  • Профессия Data Analyst
  • Курс «Математика для Data Science»
  • Курс «Математика и Machine Learning для Data Science»
  • Курс по Data Engineering
  • Курс «Machine Learning и Deep Learning»
  • Курс по Machine Learning

Python, веб-разработка

  • Профессия Fullstack-разработчик на Python
  • Курс «Python для веб-разработки»
  • Профессия Frontend-разработчик
  • Профессия Веб-разработчик

Мобильная разработка

  • Профессия iOS-разработчик
  • Профессия Android-разработчик

Java и C#

  • Профессия Java-разработчик
  • Профессия QA-инженер на JAVA
  • Профессия C#-разработчик
  • Профессия Разработчик игр на Unity

От основ — в глубину

  • Курс «Алгоритмы и структуры данных»
  • Профессия C++ разработчик
  • Профессия Этичный хакер

А также

Лучшие инструменты Python: IDE и редакторы кода

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

С ростом популярности «змеиного языка» появляется все больше средств для работы с ним. Этот обзор расскажет о наиболее распространенных средах разработки и редакторах для написания кода на Python, а также поможет выбрать наиболее эффективные из них.

Что такое среда разработки / IDE

IDE (Integrated Development Environment) или «интегрированная среда разработки» представляет готовый комплекс средств, необходимых для разработки создания ПО. Во время работы в IDE программист Python использует широкий набор инструментов, в число которых входят редакторы, библиотеки, платформы для запуска, отладки и тестирования кода. Благодаря средам разработки, программист может не только сэкономить время, но и сделать код более качественным и читаемым.

Требования для среды разработки на Python

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

  • Запуск написанного кода прямо из среды разработки. Если IDE не включает в себя эту функцию — это просто усовершенствованный редактор.
  • Поддержка отладки. Возможность поэтапного выполнения программы с целью поиска ошибок – одна из основных фишек любой среды разработки.
  • Сохранение и перезагрузка файлов с кодом. Если выбранная программа не позволяет пользователю сохранить код, закрыть файл и вновь запустить его через некоторое время, ее нельзя назвать полноценной средой разработки.
  • Подсветка синтаксиса. Стандартная функция, которая значительно упрощает чтение кода и нахождение отдельных переменных.
  • Автоматическое форматирование кода. Любой редактор кода способен знать, как правильно пишутся основные операторы языка и самостоятельно добавлять отступ на следующей строке.
  • Большое число плагинов. Плагин – независимый программный модуль, добавляемый к основной программе для расширения её возможностей. Чем больше их можно подключить – тем лучше.

Лучшие IDE для Python

Eclipse / PyDev / LiClipse

Eclipse – интегрированная среда разработки, которая особенно популярна для программирования на Java, но отлично встраивается и в инструментарий Python.

Для работы с Python в Eclipse необходимо установить плагин PyDev. Его можно использовать при разработке CPython, JyPython и IronPython. PyDev включает в себя редактор кода, инструменты навигации и проектирования кода, а также отладчик.

Для достижения оптимальной производительности IDE рекомендуется установка стороннего плагина LiClipse. Благодаря ему, в программе можно работать с другими языками, включая С++, JS и Django.

Особенности Eclipse
  • Утилита бесплатна и имеет открытый исходный код.
  • При установке плагина PyDev пользователю предлагается ряд дополнительных функций: рефакторинга и анализа кода, поддержки MyPy и виртуальных сред разработки, а также возможность работы с f-строками.
  • Просто настраивается и позволяет устанавливать плагины для работы с различными языками программирования, включая Python, JavaScript, C++ и Django.
  • Предлагает пользователям инструменты для завершения кода и его анализа.

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

IDLE

IDLE (Integrated Development and Learning Environment) считается базовой средой для работы с кодом Python. Она имеет очень простой интерфейс и содержит в себе минимум функций. Используется, как правило, новичками, которые, изучив основы языка, переходят на другие платформы.

Особенности IDLE

  • Бесплатная утилита с открытым исходным кодом.
  • Оснащена интерактивным интерпретатором и средством оповещения об ошибках.
  • В редакторе IDLE есть функции многооконного редактора кода и умного отступа.
  • IDLE кроссплатформенна, что делает ее более гибкой для разработчиков. Это актуально лишь при использовании набора инструментов Tkinter GUI toolkit.

Для чего подходит: для использования в качестве начальной среды для разработки на Python.

PyCharm

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

Особенности PyCharm
  • Есть платный и бесплатный вариант. Платная версия предоставляет расширенный функционал, а именно поддержку Cython, покрытие и обнаружение дублирующегося кода.
  • Включает в себя отладчик, интеллектуальный редактор кода и инструменты для навигации.
  • PyCharm поддерживает фреймворки для web-разработки, множество языков программирования, включая JS, Angular JS, Python, HTML и CSS.

Для чего подходит: для комплексной разработки на Python — объединяет в себе все необходимые инструменты для работы с языком.

Thonny

Thonny – IDE с простым и интуитивно понятным интерфейсом. Утилита создавалась с образовательными целями Тартуским университетом при поддержке фонда RaspberryPi и Cybernetica AS.

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

Особенности Thonny
  • IDE оснащена несложным отладчиком с функциональными клавишами.
  • Отлично работает с MicroPython и автоматически подсвечивает неверный синтаксис.
  • В среду разработки уже встроена последняя версия Python.
  • Не требует большого объема памяти для работы.

Для чего подходит: для старта практического знакомства с Python для начинающих.

Jupyter Notebook

Это веб-приложение с открытым исходным кодом, поддерживающее рабочие среды для несколько языков программирования, включая Python, Ruby и Perl. Для работы с другими языками в Jupyter Notebook применяется специальный «волшебный» язык (Magic Command, Line Magic), который можно опознать по символу «%» перед командой.

Рабочая среда может запускаться как на компьютере, так и на популярных облачных сервисах в виде платформ для программирования Azure Notebook, Google Colab или Watson Studio Cloud. Jupyter Notebook позволяет создавать документы, содержащие живой код, уравнения, визуализации и повествовательный текст, и обмениваться ими.

Главная особенность и преимущество Jupyter — способность соединять в одном документе (под названием Notebook) исполняемый код и фрагменты текста на основе разметочного языка Markdown. С таким «ноутбуком» можно работать прямо через веб-браузер без каких-либо дополнительных настроек на компьютере.

Особенности Jupyter Notebook
  • Возможность быстрого старта разработки в режиме онлайн, без развертывания среды на своем устройстве.
  • Функциональная автономность кода. Из-за того, что код в «ноутбуке» хранится в отдельных ячейках, его можно разбивать и выполнять выборочно — отдельно для конкретного фрагмента без запуска всей программы. Также можно менять порядок исполнения частей кода.
  • Высокая доступность кода при помощи использования облачных сервисов, типа Azure Notebooks, к которым можно подключаться онлайн из любого места.
  • Удобство документирования кода и журналирования данных. В Notebook можно одинаково легко снабдить код текстовым комментарием и добавить к тексту фрагмент работающего кода.
  • Возможность скопировать в «ноутбук» код напрямую из любого GitHub-репозитория.

Для чего подходит: для создания небольших сценариев обработки данных в сфере машинного обучения (ML), визуализации, статистики и data science, а также для быстрого запуска и проверки на работоспособность отдельных фрагментов кода при обучении.

Spyder

Бесплатная IDE с открытым исходным кодом была создана разработчиком Пьером Рейбо в 2008 году и первоначально называлась Pydee. Кроссплатформенная среда разработки выпускается под свободной «нон-копилефт» лицензией (non-copyleft license) MIT. С 2012 года поддержкой «Паука» занимается научное сообщество Python.

Основной функционал Spyder легко расширяется для использования в data science с помощью интеграции с множеством «научных» библиотек — NumPy, SciPy, Pandas, IPython, QtConsole, Matplotlib, SymPy, Scipy и другими. Благодаря сторонним плагинам, среда может использоваться в качестве библиотеки расширений PyQt5.

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

Особенности Spyder
  • Легкая установка, благодаря диспетчеру пакетов Python.
  • Поддержка сообществом Python.
  • Богатые возможности инструментов разработки.
  • Встроенная интеграция со многими популярными научными библиотеками.
  • Spyder включен как IDE по умолчанию в популярный дистрибутив Anaconda Python.

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

Wing

Wing Python IDE от компании Wingware — быстрая, стабильная и легковесная кроссплатформенная среда разработки Python. Она представлена в трех редакциях:бесплатной упрощенной версии Wing 101 и двух платных версиях с различным функционалом — Wing Personal и Wing Pro.

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

Особенности Wing IDE
  • Высокая степень автоматизации — автоматический запуск мультипроцессорности и дочерних процессов.
  • Расширенные возможности тестирования через использование различных фреймворков, включая unittest, pytest, Nose, doctest и Django testing.
  • Автоматическое завершение кода и контекстозависимое документирование.
  • Возможность эмулировать другие IDE — vi, emacs, Eclipse, Visual Studio и Xcod.
  • Удаленная поддержка разработки.

Для чего подходит: для ускорения работы с кодом Python.

Eric Python

Мощная и многофункциональная IDE и редактор Python, разработанная непосредственно на самом языке Python. Она основан на кроссплатформенном наборе инструментов QT, который интегрирован с гибким редактором Scintilla.

IDE имеет множество встроенных функций — инструменты совместной работы, отладчик, управление задачами, браузер классов, контроль версий, автоматическое завершение кода. Основной функционал Eric Python легко расширяется с помощью интегрированной системы плагинов.

Особенности Eric Python
  • ERIC обеспечивает интегрированную поддержку unittest, CORBA и Google Protocol Buffers (protobuf).
  • IDE имеет множество мастеров для регулярных выражений, диалогов QT и инструментов для предварительного просмотра форм и переводов QT, что упрощает задачу разработчика.
  • Поддержка основных веб-браузеров, встроенная библиотека проверки орфографии, которая позволяет избежать ошибок.
  • Поддержка локализации и библиотеки рефакторинга Rope для разработки.
  • Отсутствие простого графического интерфейса.

Для чего подходит: как для повседневного редактирования, так и для задачь профессиональных разработчиков.

Что такое редакторы кода

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

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

Лучшие редакторы кода для Python

Sublime Text

Наш топ редакторов для Python открывает Sublime Text — эффективный кроссплатформенный редактор кода с минималистичным интерфейсом. Инструмент разрабатывался на двух языках программирования — C++ и Python, а также включает в себя Python API.

Особенности Sublime Text
  • Очень просто настраивается. Позволяет быстро менять проекты и разделять редактирование.
  • Инструмент в принципе платный, но разница с бесплатной версией минимальна — лишь в изредка всплывающем рекламном окне.
  • Минималистический интерфейс — оставлены лишь необходимые функции, без излишних диалоговых окон и панелей инструментов.
  • Поддерживает 44 языка программирования, включая 5 наиболее популярных: Python, C, C++, Java и JavaScript.
  • Sublime Text оснащен мощным Python API, который гарантирует легкую настройку с использованием инструментов и пакетов.
  • Отображает значки для папок и файлов, чтобы можно было указать статус Git.

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

Atom / Atom-IDE

Atom – текстовый редактор с открытым исходным кодом, поддерживающий плагины, разработанные на Node.js. Предоставляет пользователям функцию умного автоматического заполнения, встроенный менеджер пакетов, возможность работать с GIT прямо из приложения.

С помощью «Атома» можно быстро кастомизировать любую часть приложения (от интерфейса до набора функций) через установку дополнительных пакетов. Однако, добавление новых плагинов имеет и существенный минус — может негативно сказаться на быстродействии.

Особенности Atom
  • Бесплатная утилита с открытым исходным кодом.
  • Имеет интегрированный диспетчер пакетов для поддержки плагинов.
  • Поддерживает кроссплатформенное редактирование.
  • Оснащена функцией умного автозаполнения.
  • Позволяет работать с GIT прямо из среды.

Atom — обычный текстовый редактор, а Atom-IDE — целая среда разработки, которая может похвастаться увеличенным списком функций. Она предлагает пользователю более умное автоматическое заполнение, а также функции по диагностике и форматированию кода. Также Atom-IDE оснащена хорошей системой навигации по коду.

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

Visual Studio Code

Многофункциональный редактор кода, разработанный корпорацией Microsoft. VS Code — лучшая среда разработки для Python, по мнению многих членов сообщества «пайтонистов». IDE основана на Electro — фреймворке для развертывания приложений Node JS на браузерном движке Blink.

Visual Studio Code содержит в себе функции редактора кода и одновременно дает множество функций для работы с кодом, включая отладку и выполнение прямо в среде программирования.

Особенности VS Code
  • VS Code может быть как бесплатным, так и платным. Однако основные задачи можно решать при помощи бесплатной версии.
  • Имеет свыше 4700 расширений.
  • Подсвечивает синтаксис и автоматически завершает код.
  • Оснащен мощным отладчиком, который работает прямо из редактора.
  • Дает возможность работать с GIT прямо из среды разработки.
  • Имеет встроенную функцию Live Share, которая позволяет программировать удаленно нескольким разработчикам.

Для чего подходит: для отладки и выполнения кода, а также для разработки крупных облачных и веб-проектов.

VI / VIM

VIM (Vi Improved) – качественный редактор кода, написанный на основе популярного текстового редактора VI. Он включает в себя весь основной набор функций — от подсветки синтаксиса до указания на ошибки и автозаполнения кода.

Особенности VIM
  • Утилита бесплатна и имеет открытый исходный код.
  • Многоуровневое дерево отмены.
  • Есть два режима ввода, переключаемых вручную: командный и текстовой. Первый позволяет работать с кодом непосредственно в командной строке, а второй — в обычном редакторе.

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

GNU Emacs / XEmacs

Проект Emacs (Editing MACroS running on TECO) был создан в 1976 году легендарным энтузиастом опенсорса Ричардом Столлманом (GNU, Free Software Foundation) как семейство бесплатных текстовых редакторов с расширяемым набором функций. Самыми известными продуктами из этого семейства стали редактор GNU Emacs и его форк XEmacs, выпущенные под лицензией GNU GPL в 1984 и 1991 годах соответственно.

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

Особенности GNU Emacs
  • Бесплатное и полностью настраиваемое программное обеспечение.
  • Подсвечивает синтаксис для различения элементов документа, таких как ключевые слова и комментарии.
  • Автоматическое выставление отступов, новых строк и квадратных скобок и других элементов для обеспечения согласованного форматирования в файле.
  • Поддержка 24-битного цветового кодирования.
  • Многофункциональность. Помимо самого редактирования текста и кода, поддерживает целый набор дополнительных функций через установку расширений.

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

EmEditor

Это быстрый, легкий, но расширяемый и простой в использовании текстовый редактор для Windows. Он поддерживает автоматический анализ CSV, мощные макросы, Unicode и работу с очень большими файлами. Доступны как 64-битные, так и 32-битные сборки.

EmEditor был разработан Ютакой Эмурой, членом Ассоциации профессионалов компьютерного кода (Association of computer code Professionals) в компании Emurasoft. EmEditor получил более 24 международных наград, в том числе награду Shareware Industry Award в категории «Лучшие приложения».

Особенности EmEditor
  • Есть бесплатная версия.
  • Позволяет открывать и редактировать большие файлы (до 2х48 ГБ или 2,1 млрд строк) и CSV-файлы в рекордно короткие сроки.
  • Редактор поддерживает Unicode и множество альтернативных международных кодировок.
  • Есть быстрый поиск с функцией «Фильтр» и возможность автозаполнения.
  • Настраиваемая панель инструментов.
  • Первый редактор с поддержкой японских и китайских алфавитов.

Для чего подходит: для максимального упрощения процесса редактирования кода Python в Windows.

Notepad++

Notepad++ — самый простой, удобный и легкий текстовый редактор для Windows, который обеспечивает наилучшие результаты, независимо от уровня подготовки пользователя. Этот бесплатный редактор исходного кода с поддержкой несколько языков, чаще всего используется как более продвинутая замена встроенного в ОС Windows приложения «Блокнот», но может с успехом применяться и для разработки на Python.

Редактор текстовых файлов ASCII для Windows был разработан программистом Дон Хо (Don Ho) на базе Scintilla (C++) еще в 2003 году. И даже спустя много лет он продолжает оставаться самым надежным текстовым редактором для разработчиков и программистов.

Авторитетные ресурсы Lifehacker и Stack Overflow оценивают его эпитетами «самый популярный текстовый редактор» и «самый используемый текстовый редактор в мире».

Особенности Notepad++
  • Визуальный редактор, основанный на принципе WYSIWYG.
  • Возможность автоматизации Python и других языков с помощью скриптов.
  • Поддерживает более 140 совместимых макросов и плагинов.
  • Использует чистый Win32 API и STL, что обеспечивает более высокую скорость и меньший размер программы.
  • Поддерживается поиск/замена регулярных выражений.
  • Есть подсветка и свертывание синтаксиса.
  • Есть запись и воспроизведение макросов.
  • Мультиформатность. Поддержка работа с файлами форматов TXT CSS, ASM, AU3, BASH, BAT, HPP, CC, DIFF, HTML, REG, HEX, JAVA, SQL, VBS.
  • Поддерживается мультиязычная среда (более 80 языков). Интернационализация через файлы XML.
  • Встроенная возможность обучение программированию на C с примерами.
  • Есть неофициальная сборка редактора для Linux — пакет Snap.

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

Как выбрать среду разработки и редактор кода для Python

Из приведенного выше сравнения можно легко понять, что выбор подходящих инструментов работы со «змеиным языком» — занятие весьма непростое. Для того чтобы вам было проще выбрать лучшие IDE и редакторы кода для Python, облегчим процесс с помощью небольшого опросника.

Каков ваш уровень как разработчика?

  • Новичок: IDLE (или другой онлайн текстовый редактор для Python) — идеальный выбор для первых шагов в языке Python. PyCharm также хорош, но при его использовании требуется помощь опытного человека.
  • Средний: PyCharm, Sublime, Atom, Vs Code.
  • Продвинутый: PyCharm, Vim, Emacs, Sublime, Atom, Vs Code.

Какова ваша специализация?

  • Вебразработка: PyCharm Professional, VS Code.
  • Наукаоданных: Spyder, Jupyter Notebook, PyCharm Professional.
  • Скрипты: Sublime, Atom, сообщество PyCharm, Eclipse + PyDev.
  • Тестирование: Sublime, Atom, сообщество PyCharm, Jupyter Notebook.

Какая у вас ОС?

  • Linux, macOS: PyCharm, Sublime, Atom, Vim, Jupyter.
  • Windows: Sublime, VS Code, Eclipse + PyDev, PyCharm.
  • НесколькоОС: PyCharm, Sublime, Atom.

Насколько мощное оборудование используется?

  • Все плохо: IDLE, Atom, Sublime, любой онлайн редактор для программирования.
  • Всесупер: PyCharm, VS Code, Eclipse + PyDev.

Заключение

В процессе ответа на вечные вопросы «Как найти лучшую среду для Python?» и «Какой редактор выбрать для Python?», необходимо пользоваться главным принципом — лучший выбор тот, который решает проблему. Если редактор перегружен функциями или конфигурациями, то, возможно, лучше отказаться от него и выбрать инструмент попроще. Если же необходимы функции для улучшения уровня кода, то есть смысл использовать многофункциональные среды разработки.

Новичкам следует обратить внимание на более простые инструменты Python — с минимальным количеством настроек и функций. Чем меньше среда разработки или редактор будет содержать в себе мешающих факторов — тем лучше. Если работа по разработке уже идет, целесообразнее дополнить уже используемый набор инструментов чем-то полезным, чем искать новый.

Нужна надёжная база для разработки программных продуктов на Python? Выбирайте виртуальные серверы от Eternalhost с технической поддержкой 24/7 и бесплатной защитой от DDoS!

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

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