Содержание

Разработка на Python — Инфографика «Экосистема разработки в 2021 году»

Основные выводы

Образ жизни и интересные факты

Демография

Методология

Исходные данные

C

C#

C++

Go

Java

JavaScript

Kotlin

PHP

Python

R

Ruby

Rust

Scala

Swift и Objective-C

Big Data

Базы данных

DevOps

Образование

Встраиваемые системы

Микросервисы

Прочие технические вопросы

Инструменты для командной работы

Техническая документация

Тестирование


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

Какую версию Python вы используете чаще всего?

Только 3% разработчиков на Python продолжают использовать в 2021 году версию Python 2! Пять лет назад их доля составляла 47%.

С какой целью вы используете Python?

За последние 5 лет проведения опроса JetBrains «Экосистема разработки» основные сферы применения языка Python не изменились. Чаще всего он используется для веб-разработки и анализа данных — эти направления назвали примерно по 50% респондентов.

Лишь 4% пользователей Python разрабатывают игры, из них 77% занимаются этим в качестве хобби.

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

Какие веб-фреймворки/библиотеки вы используете в дополнение к Python?

Какие фреймворки для анализа данных вы используете в дополнение к Python?

Python и JavaScript — те языки, которые респонденты чаще всего изучают: почти 30% участников опроса изучали их в течение прошедших 12 месяцев.

Мы спросили, на каких платформах открытых онлайн-курсов люди чаще всего изучают Python, если они вообще пользуются такими платформами. Чаще всего респонденты называли Udemy, Coursera и edX. Если сравнивать с другими языками, интересно, что Udemy обычно мене популярна, в то время как Coursera и edX используются значительно чаще.

Компания JetBrains запустила собственную образовательную платформу — JetBrains Academy. Для изучения Python и обучения этому языку можно использовать специальную IDE PyCharm Edu.

Какие фреймворки/библиотеки вы используете в дополнение к Python?

Половина разработчиков, участвовавших в опросе, изучали Python, когда получали образование.

Какие еще технологии вы используете совместно с Python?

Доля разработчиков на Python, которые работают в очень крупных компаниях (свыше 5000 сотрудников), составляет 20% — это больше, чем среди других разработчиков (15%). Что касается компаний других размеров, соотношение примерно такое же, как и у остальных разработчиков.

Какую IDE или редактор вы чаще всего используете для разработки на Python?

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

Сегодня Python — основной язык для Data Science. Большинство разработчиков, занятых анализом данных (54%), инжинирингом данных (54%) и машинным обучением (71%), используют Python.

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

Datalore — эффективная среда для Jupyter Notebooks. Она доступна для любых пользователей онлайн, а также ее можно установить локально в корпоративной среде.

DataSpell — новая IDE, разработанная JetBrains для Data Science. Это высокопроизводительная среда разработки для специалистов в области Data Science, которые активно занимаются разведочным анализом данных и прототипированием моделей машинного обучения.

Подробнее о состоянии экосистемы разработки на Python можно прочитать в официальном Отчете об опросе разработчиков на Python, подготовленном совместно с Python Software Foundation.

PyCharm

IDE для профессиональной разработки на Python

Datalore

Умное веб-приложение для анализа данных

PyCharm Edu

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

DataSpell

Новая IDE от JetBrains для Data Science

Предыдущий раздел

PHP

Следующий раздел

R


Основные выводы

Образ жизни и интересные факты

Демография

Методология

Исходные данные

C

C#

C++

Go

Java

JavaScript

Kotlin

PHP

Python

R

Ruby

Rust

Scala

Swift и Objective-C

Big Data

Базы данных

DevOps

Образование

Встраиваемые системы

Микросервисы

Прочие технические вопросы

Инструменты для командной работы

Техническая документация

Тестирование

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

Примите участие в будущих опросах

Я хочу принимать участие в будущих опросах JetBrains

Я хочу получать результаты будущих исследований JetBrains

Я хочу получать электронные письма о новостях, продуктах и услугах компании JetBrains

By submitting this form I agree to the JetBrains Privacy Policy

Если у вас есть вопросы или пожелания, свяжитесь с нами по адресу [email protected].

Python — серьезный язык для разработки backend / Хабр

Всем привет! Меня зовут Денис Аникин, я тимлид в команде Chat в Райффайзенбанке. А также представитель внутреннего Python-сообщества, так называемый «community lead» (об этом как-нибудь в другой раз). В этой статье я хотел поговорить про отношение к Python среди разработчиков и обсудить все основные претензии, которые очень давно следуют за языком по пятам.

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

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

Также я вспоминаю нашу внутреннюю шутку, которая сформулирована моим коллегой, Даниилом: «Денис начинает свой понедельник с очередного доклада на тему, почему Python — серьезный язык». Я долго думал над этой шуткой (извините, я не гений), а потом решил: почему бы и не начать с этого статью? 🙂

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

Динамическая типизация

За динамическую типизацию Python ругали практически все — это одна из крупнейших претензий к нему в среде разработчиков. Но на самом ли деле динамическая типизация — такое уж зло? Как минимум, разработка на языках динамической типизации проще, быстрее и зачастую приятнее — конечно, это субъективный тезис, но он имеет право на существование.

Какой-нибудь JSON-парсер на языке со статической типизацией будет гораздо более многословным и тяжелым в написании, чем на языке с динамической типизацией (ох уж эта элегантная связка orjson и pydantic). Где-то, где мы в Python отобьемся манипуляциями в рантайме, придется подтаскивать большие объёмы кодогенерации.

Аннотации — благо

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

При этом Uncle Bob говорил, что тесты на бизнес-логику не отменяются статической типизацией, да и в Python теперь типы можно проверять статически с помощью аннотаций и MyPy. Конечно, мы пишем больше тестов и тщательно проверяем бизнес-логику, но, на мой взгляд, это идет на пользу сервисам. Всё очень неоднозначно.

Да, у нас есть gradual типизация. MyPy, typing, аннотации типов — это позволяет нам значительно улучшить качество кода, уберечься от массы ошибок, получить экстрафункциональность языка. Например, в Python нет констант, но с помощью связки typing и MyPy можно получить их аналог. Аннотации в Python можно анализировать как статически, так и динамически: в typing есть интроспекция, появляются проекты вроде Beartype. 

На базе аннотаций типов построены современные фреймворки, такие как Pydantic (строгие схемы валидации в рантайме) или FastAPI. Я считаю вот так: Python в связке с аннотациями типов являет нам gradual типизацию и тем самым предоставляет здоровый компромисс между преимуществами динамической и статической типизаций. Он не порождает хтоническое чудовище, каким его часто объявляют в интернете. Напротив, нам дают способ писать и быстро и надежно, здесь и сейчас.

Где-то тут к нам подкрадывается вопрос о типобезопасности. Полагаю, что аннотации типов проверку на типобезопасность не пройдут, хотя вопрос это довольно сложный, не для моего уровня понимания. На текущий момент ошибок типов с MyPy и аннотациями типов я не встречал, но уверен, что где-то при определенном стечении обстоятельств это возможно. Единственное, что видно у нас — увеличение надежности нашего кода (пока мы пишем наши бэкенды, аннотации часто помогают отлавливать ошибки), умение гибридно использовать аннотации и почти никаких type error в коде.

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

Честно говоря, пункт уже раздулся, поэтому я просто набросаю свои мысли списком:

  • Статический анализ хорош везде;

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

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

Скорость

Этот аспект языка часто подвергается критике очень многими разработчиками. И если динамическая типизация — сложная и неоднозначная тема для обсуждения, то скорость — то, о чем говорят вообще все. 

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

Когда обсуждают скорость Python, обычно вспоминают про C++, ведь на нем все бенчмарки выглядят в сто раз лучше, чем на Python. Но если мы начнём разбираться в вопросе, то станет ясно, что скорость Python на данном этапе — не такая уж проблема. Конечно, Python действительно медленный в CPU-bound задачах. И тут у вас в голове возникает мысль — если он такой медленный, то это точно проблема!

На мой взгляд, дело обстоит так. В современной web-разработке полно i/o-bound нагрузки: часто мы принимаем запросы по сети, отправляем их в сеть, читаем из БД, пишем в БД, оперируем с файлами и так далее.

Одни из действующих «лиц» CPU-bound и IO-bound задач

Для этого типа задач у Python есть прекрасный ответ — асинхронный подсет языка, нативный async/await, event loop из коробки и uvloop, для тех, кто хочет ещё быстрее. С помощью этой части Python мы можем эффективно утилизировать ресурсы CPU. А для исключительно CPU-bound в мире Python тоже много «припарок»: multiprocessing, subprocess, Pypy, Cython, Numba и так далее. Поэтому асинхронный Python работает очень даже быстро.

Подведу субъективный итог: многое, если не всё, можно смело писать на Python, а CPU-bound, при необходимости (если стандартная библиотека не тянет), переписывать на более быстрых языках и ставить эти микросервисы-воркеры за очередями сообщений. Разве это не идеальное сочетание?

Язык для новичков

Довольно часто Python считают языком для новичков. Ему учат на каждом шагу, в мире миллион курсов по Python. Топовые блоггеры обещают обучить ему чуть ли не за один вечер, говорят, что все сразу же получают серьезную зарплату, уютный офис и счастливое будущее. На этом слишком радужном фоне за Python прочно закрепился имидж языка для новичков, где достаточно написать пару for и def, объявить несколько переменных — и вот ты уже профессиональный Python-разработчик уровня middle. А потом «перерастаешь» и идешь писать на «серьезном языке».

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

В самом языке у нас целая куча всяких знаний, нюансов, сложностей и декларативных частей. Судите сами:

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

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

  • Метаклассы. Классы, создающие классы? Функция type, она же класс? А тип type — тоже type? Все классы создаются type? Популярный сценарий применения — ORM? Можно, пожалуйста, мне другой «простой» язык?

  • Библиотека functools в полном составе 🙂

  • Генераторы. Можно спрашивать на собеседованиях: «А для чего вы используете генераторы?» — и услышать очень много разных ответов. Некоторые вообще не понимают, зачем они нужны. А ведь генератор поддерживает протокол итерации, в него можно слать значения, yield from — ну, сами все понимаете.

  • Контроль зависимостей. Venv, virtualenv, pipenv, poetry, pip tools, pdm, pipx, pyproject и так далее.

  • Инфраструктура вокруг Python. Крайне полезно для работы было бы знать, что такое pypa, pypi, psf — а это ещё отдельный пласт знаний.

  • PEP. Иногда спрашиваю людей: «А что такое PEP?», — и самый частый ответ: «Стандарт кода». Даже опытные разработчики помнят PEP8 в лучшем случае.

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

  • Могущественная интроспекция и «мета-язычные» вещи. Runpy, importlib, trace, traceback, gc, inspect, sys, typing.get_type_hints, typing.get_origin, typing.get_args.

  • Встроенные классы ошибок, методов и типов. Можете выполнить и получите 156: import builtins; len(dir(builtins)). Это количество встроенных классов ошибок, методов, типов. Желательно помнить многое из этого.

  • Новые вещи. Оператор «морж», pattern matching.

  • Конкурентное выполнение. Threading с кучей нюансов, multiprocessing, subprocess, свежий communicating sequential processes «паттерн» (PEP 554).

  • GIL. Комментарии не нужны, но они будут (я не умею лаконично, помогите).

  • Особые языковые возможности. Dict, list, set comprehensions, generator expressions, например.

  • Асинхронность. Это отдельный «подсет» языка, где уже целая своя вселенная с кучей пакетов и даже отдельными (не встроенными в язык) концепциями, вроде structured concurrency.

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

  • Динамическая типизация. Строгая (местами «обходимая» полимформизмом, или неявным приведением int к float), утиная типизация, typing.Protocol (про него выше), gradual типизация. Скажите мне — это правда так просто?

Типичный диалог (а иногда и монолог) в интернете

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

GIL 

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

Ограничения GIL известны всем — в Python при попытке распаралеллить любую CPU-bound нагрузку с помощью тредов, разработчики неизбежно сталкиваются с тем, что в один момент у всегда будет работать только один поток. Тема абсолютно выдающаяся и имеющая за собой такой поток реминисценций, что про это даже немного неловко говорить, — но поговорить нам, всё-таки, в рамках статьи нужно.

Издалека проблема GIL — и сложная, и, как кажется, практически нерешаемая (мы все помним, что на этот счет сказали Гвидо, Дэвид Бизли; UPD: тут недавно вышла статья, говорят о nogil… но давайте не будем об этом). 

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

Изрядно поношенный GIL

Некоторые разработчики спрашивают, зачем нам тогда треды? 

В современном Python их используют для одной интересной штуки — на них можно делать wannabe-асинхронный код, при этом не делая асинхронный код, как ни странно. То есть можно написать на тредах что-то, что занимается интенсивной i/o-нагрузкой. И тогда внезапно все станет асинхронным за счет того, что GIL отпускается на i/o-операциях. 

Это важное примечание, так как это сложный и неочевидный нюанс работы GIL — он описан в документации, но кто же её читает — шутка :). Но благодаря ему мы можем получить преимущество даже в синхронном коде, а также не блокировать петлю событий, когда у нас возникает потребность вызвать синхронное i/o в петле событий (вспомним про запись файлов, привет экзекьюторам).

Python — «неказистый язык для набрасывания прототипов на Django»

Частое мнение в интернете — Python годен только для быстрого, реактивного набрасывания прототипов на Django, а все остальное удел «серьезных языков» (тм). И это ещe одно, с моей точки зрения, не очень корректное суждение. 

Конечно, на Django, на Python быстро набрасывают прототипы — я не буду отрицать очевидного. Но на языке делают не только это, описанное — лишь малая часть возможностей экосистемы Python. Однако быстро прототипирующие люди, использующие язык одним способом, почему-то взяли на себя прерогативу оценивать позиционирование языка по своей сфере. И с этим я не согласен. 

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

Pytest — это прекрасный фреймворк для написания тестов и яркий представитель этого тулсета. Он позволяет выстраивать очень сложные тестовые сценарии с инверсией зависимостей всего с помощью двух инструментов — fixtures и parametrize. С их помощью можно делать очень сложные тесты — подробно изучать производительность и бизнес-логику системы.

В тестировании, помимо Pytest, у нас есть Hypothesis — отличный фреймворк для fuzzy, property тестирования. Фреймворк настолько впечатляет, что недавно, на Python Language Summit 2021, стало известно, что его используют core developer’ы и с помощью него нашли ошибки в PEG парсере самого Python.

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

from hypothesis import given
from hypothesis.strategies import text
def encode(input_string: str) -> list:
    """Это просто синтетический пример."""
    count: int = 1
    prev: str = ""
    lst: list = []
    character: str
    for character in input_string:
        if character != prev:
            if prev:
                lst.append((prev, count))
            count = 1
            prev = character
        else:
            count += 1
    lst.append((character, count))
    return lst
def decode(lst: list) -> str:
    """Это просто синтетический пример (2).
""" q: str = "" character: str count: int for character, count in lst: q += character * count return q @given(text()) def test_decode_inverts_encode(s): """И здесь мы получаем совершенно невероятный объем тестов. При том, что повесили 1 декоратор.""" assert decode(encode(s)) == s

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

Вообще, в Python есть огромное количество вспомогательных библиотек для тестирования — Faker, Factory boy, Mixer, Seed, куча расширений для Pytest — например, для параллелизации. Поэтому говорить, что Python можно использовать только для быстрого прототипирования на Django — немного некорректно.

Безопасность

Как-то раз нам написали комментарий, что за Java и C# стоят крупные компании, бизнес, а за Python только Гвидо и никакой ответственности нет. Видимо, это означало, что языком пользоваться страшно и от этого он абсолютно несерьезен.

Мне кажется, этот вопрос довольно сложный. Крупные проблемы языковой среды — не такой уж и частый сценарий. Но вряд ли при серьезных проблемах разработчики на Java или C# моментально получат их решение.

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

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

Популярность

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

У нас есть аналитика GitHub, здесь Python сразу за JavaScriptGoogle-тренды довольно наглядно показывают, что Python очень долго рос все эти годы и умудрился своей неспешной змеиной «походкой» обогнать мощных конкурентовРейтинг PYPL (некоторые говорят, что он не очень объективен)Любимый многими RedMonk. Кто-то считает его довольно объективнымМенее известный рейтинг IEEE Spectrum, который агрегирует данные из 11 источников, включая (но не только) некоторые из описанных выше и нижеStackoverflow говорит, что по популярности Python сейчас третийВот и всем известный и бесконечно критикуемый TIOBE

Причин роста много, но кроме известных, для себя я предпочитаю выделять такую: одна из сильнейших черт Python в том, что он по пути вбирал в себя огромное количество разных парадигм и подходов, зачастую беря из них если не лучшие, то как минимум хорошие куски. Именно поэтому он умудряется быть таким универсальным и при этом довольно дружелюбным. Хм, дружелюбный сосед-питон? (шутка, предоставлена ЗАО «бумер-кринж»).

И о минусах

Что? Секундочку, ведь я только что активно поддерживал Python, а теперь начинаю перечислять минусы? Дело в том, что мне не хочется выглядеть как фанатик в розовых очках. Поэтому я просто назову уже не совсем типовые вещи, но тоже часто встречающиеся:

  • Некоторые не любят пробелы… вспомним Whython. Я до сих пор не понимаю, в чем проблема — я везде код форматирую пробелами, а в Python они дают возможность избежать написания «лишних» скобок. Но не признать того, что есть недовольные, нельзя.

  • Python 2 и 3. Это неактуальный топик на текущий день, и Python 3 принес столько невероятных вещей, что о второй версии говорить нет желания. Но стоит признать — это было больно, и многие ещё помнят, насколько болезненно дался переход. Некоторых это отвращает от языка: подсознательно ты ждешь Python 3 vs 4.

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

Небольшие итоги

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

Python используется большинством авторитетных компаний, таких как Google и Яндекс. При этом популярность языка продолжает расти, а так же Гвидо недавно на Python Language Summit 2021 обещал, что с поддержкой Microsoft он сделает Python быстрее раз в пять, во многом с помощью jit. Может быть из конца списка языков в бенчмарках мы переместимся в середину, и уж там то точно заживем.

В Python фантастические веб-фреймворки. Можем вспомнить Django или FastAPI — это выдающиеся фреймворки, со своими плюсами и минусами. Современный Python можно брать для написания быстрых, хороших и серьезных бэкендов. В Python-среде много крутых разработчиков и приятных людей!

Python жутко популярен и продолжает расти. Потенциал его роста не исчерпан.

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

А ещё на Python очень приятно писать код — и этого совершенно не стоит стесняться.


Эта статья — расширенная версия доклада с IT-конференции Райффайзенбанка <code/R>. Здесь много новых подробностей, но если хотите услышать часть голосом — смотрите видео.

что нужно знать джуниору, чтобы работать и развиваться / Хабр

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


Главные темы:

  • Какие знания нужны начинающему программисту, чтобы заниматься
    веб-разработкой?
  • Чего ждут работодатели от разработчиков?
  • Что делать, чтобы найти работу без опыта?
  • Как может развиваться Python-разработчик?

Python Junior Podcast — подкаст о программировании для тех, кто хочет лучше разбираться в Python. Эфиры ведут евангелисты сообщества MoscowPython и преподаватели курсов Learn Python.

В разговоре участвовали:

  • Валентин Домбровский,сооснователь MoscowPython
  • Злата Обуховская, тимлид NVIDIA
  • Григорий Петров, евангелист MoscowPython
  • Алексей Штырняев, разработчик в FinEx, преподаватель курсов Learn
    Python

Почему Python хорош для веб-разработки

Валентин Домбровский: Почему именно Python подходит для веб-разработки? Почему не PHP или JavaScript, например?

Григорий Петров: Так ведь выбора особо нет. Несмотря на то что в современном Вебе можно фактически без бэкенда — чисто на фронтенд-технологиях, на JavaScript — собрать себе single page application или progressive web application, все равно это слишком сложно, плохо индексируется и требует крутых разработчиков.

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

Давайте рассмотрим возможные варианты.

  • C#. Microsoft действительно молодцы, они сделали .NET Core и всячески ее продвигают. Но, во-первых, это новая кроссплатформенная технология, и там еще не все гладко. Во-вторых, это действительно дорого, разработчиков C# мало — просто потому, что она непопулярна.
  • Java. Это сложно. Сделать нормальный сайт на Java — это не 10 строчек кода, как на Python. Это много кода, это фреймворки, и нужно знать специфику настройки Java-серверов. В общем, сплошные боль и страдания.
  • PHP. В последних версиях он замечательный. Я даже так скажу: PHP 7.2 не хуже Python. Но нельзя просто так взять и использовать PHP 7.2. Если обычный, не топовый разработчик делает сайт на PHP, он не будет писать только на 7.2: все равно придется читать какие-то учебники, туториалы, везде куча legacy-кода, и это не очень хорошо.
  • JavaScript и Node.
    js.
    Это замечательно и очень современно, когда один язык и на фронтенде, и на бэкенде. Только не очень стабильно. Node.js — хорошая штука, но проблематично развернуть ее в продакшене так, чтобы она не падала и работала устойчиво. Плюс, если мы хотим писать качественный код на JavaScript, нам нужен не JavaScript, а TypeScript. А вот TypeScript неожиданно сложный, при виде него у рядового разработчика вскипают мозги.

Давайте опустим Ruby, Haskell, Erlang и другие нишевые штуки, и у нас остается… Python. Язык с консистентным синтаксисом, единообразной стандартной библиотекой, лучшей документацией, популярными легкими фреймворками, мегапопулярным комбайном Django.

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

Какие знания нужны для входа в профессию

Злата Обуховская: Я считаю, что один фреймворк нужно знать хорошо — и знать, какие еще бывают и когда они используются. Где Tornado, где Django, где Flask, где aiohttp и так далее.
Пригодится знать, что есть такая штука, как протоколы. В частности, знание протокола http — центральное для построения веб-приложений.

Еще нужно хотя бы приблизительно представлять себе, как в веб-проектах устроен фронтенд: что есть HTML, CSS, JS.

Алексей Штырняев: И знать, где лежит документация. Это самое главное.

Григорий Петров: Тут мы ступаем на очень зыбкую почву. Если нам не повезло и мы начали как-то серьезно изучать современный фронтенд, то он будет примерно раз в 10 сложнее, чем бэкенд на Python. Начинающему разработчику нужно ограничить свой фокус так, чтобы начать изучать HTML, но чтобы не провалиться во все эти div, span, float, как там все выравнивается и выстраивается.

Алексей Штырняев: Нужен базовый курс по Bootstrap. И основы HTML.

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

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

Григорий Петров: Да, порекомендую сразу на тот случай, если вы выбрали Python в качестве языка бэкенд разработки и, например, Django в качестве фреймворка: у Django есть документация в Django Book, она реально клевая, в ней все то, о чем сказала Злата, она и правда хороша для начинающего.

Алексей Штырняев: Еще для быстрого старта подойдет какой-нибудь Django Girls, если цель — изучить именно Django. Это такой туториал, где за один день можно пройти по верхам, понять основы и то, на что способен фреймворк.

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

Что входит в базис для веб-разработки на Python


  • Веб-фреймворки Django, Flask, aiohttp, Tornado и т. д. (и знать о существовании остальных).
  • Протоколы и API: в первую очередь http, JSON-RPC, Protocol Buffers, gRPC.
  • ORM и миграции, реляционные базы данных, SQLAlchemy, SQL, PostgreSQL, MySQL.
  • Основы HTML, CSS, Bootstrap, а также JS-фреймворки и JQuery.
  • Принципы работы приложений на продакшене, тестирование, юнит-тесты, автотесты, системы контроля версий, git.

Нужны ли джуниору алгоритмы

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

Григорий Петров: Я хочу подлить масла в огонь. Вот откуда вообще берется наша тяга к алгоритмам?

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

Это пытаются делать, но тут у нас история Хогвартса: мы не можем сделать школу волшебников, пока у нас нет ни одного волшебника. Поэтому что делать университету, в который приходят и просят: «Начните обучать программистов», а программистов у них нет, потому что все работают в Mail.ru, Rambler и «Яндексе», им там хорошо?

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

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

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

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

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

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

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

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

Григорий Петров: Бизнесу нужен писатель, а не лингвист. Писателю не нужно знать, почему тысячу лет назад это слово трансформировалось вот в то. Ему надо уметь применять эти слова.

Что нужно, чтобы найти первую работу разработчиком

Алексей Штырняев: Наверное, нет универсального рецепта, по которому нужно готовить джуниора.

Если вы приходите в какую-то компанию, вас возьмут не за то, что вы знаете Django, JSON и немного алгоритмов. Вас, скорее всего, возьмут за те скиллы, которые здесь и сейчас нужны этой компании.

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

Григорий Петров: Когда мы в VoxImplant искали нескольких джунов, наш технический директор сформулировал базовое требование так: человек должен уметь решать задачи. Понятно, что джун это будет делать не всегда эффективно, не лучшим способом и не всегда правильно, но в идеале ты ставишь человеку задачу, он напрягается и решает ее. Это тот скилл, который в первую очередь ищут работодатели.

Злата Обуховская: Люди, которые ищут работу, переходя из других областей, имеют с точки зрения бизнеса некоторое преимущество, потому что уже прошли какой-то путь и умеют решать задачи быстро. Это soft skills, я бы это назвала даже трудовой культурой. Зачастую у выпускников вузов эта трудовая культура еще не наработана.

Но мне бы хотелось все-таки попытаться дать какой-то рецепт начинающим.

Первые шаги для начинающего разработчика

Злата Обуховская: Первое — это все-таки какой-то свой проект, потому что в резюме нужно что-то написать, показать минимальное портфолио. Круче, когда эти проекты сделаны не для себя, а на фрилансе — для кого-то.

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

Валентин Домбровский: Кстати, мы на курсах готовим учеников к тому, чтобы у них появился свой проект за 10 недель обучения. Плюс тренируем навык командной разработки. Это как раз те soft skills, о которых говорила Злата.

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

Валентин Домбровский: Можно пилить свои проекты или брать простые проекты на фрилансе и параллельно заниматься рассылкой резюме.

Какие перспективы есть у Python-разработчика

Злата Обуховская: Python-разработчик может пойти куда угодно. Можно пойти в тестирование, продолжить развиваться до senior-архитектора. Или даже в менеджмент. Технические менеджеры бывают разные, и можно дорасти до топ-менеджмента. Можно развиваться в data science, DevOps, пойти в автотесты или machine learning.

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

***

Это лишь часть выпуска Python Junior. Полную версию эпизода можно послушать.

Или даже посмотреть:

RSS подкаста

Спасибо, что прочитали, послушали или посмотрели.

Руководство разработчика Python

Переключить боковую панель оглавления

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

Краткий справочник

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

  1. Установка и настройка Git и других зависимостей (подробную информацию см. на странице настройки Git).

  2. Разветвить репозиторий CPython в свою учетную запись GitHub и получите исходный код, используя:

     клон git https://github.com//cpython
    компакт-диск cpython
     
  3. Сборка Python, в UNIX и Mac OS используйте:

     ./configure --with-pydebug && make -j
     

    и в Windows используйте:

     PCbuild\build.bat -e -d
     

    См. также более подробные инструкции, как установить и построить зависимости, и страницы для конкретных платформ для UNIX, Mac OS и Windows.

  4. Запустить тесты:

     ./python -m тест -j3
     

    В большинстве систем Mac OS X замените ./python . с ./python.exe . В Windows используйте python.bat .

  5. Создайте новую ветку, в которой будет проходить ваша работа над проблемой, например:

     git checkout -b fix-issue-12345 основной
     

    Если проблема еще не существует, создайте ее. Тривиальные проблемы (например, исправления опечаток) не требуют создания каких-либо проблем.

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

  7. Разместите ветку на своем форке на GitHub и создайте запрос на вытягивание. Включите номер выпуска, используя gh-NNNN в Описание пулреквеста. Например:

     gh-12345: исправлена ​​ошибка в спам-модуле.
     
  8. Добавить запись новостей в каталог Misc/NEWS. d в виде отдельного файла. запись новостей может быть создана с помощью аннотации, или инструмент аннотации и его аннотация добавить команда. Пожалуйста, прочитайте больше о рекламе в документации.

Примечание

Вступающие впервые должны будут подписать Лицензию участника Соглашение (CLA), как описано в разделе «Лицензирование» это руководство.

Быстрые ссылки

Вот несколько ссылок, на которые вы, вероятно, будете часто ссылаться во время участие в Python:

  • Система отслеживания ошибок

  • Статус билдбота

  • Где получить помощь

  • PEP (предложения по улучшению Python)

  • Git Bootcamp и шпаргалка

Статус веток Python

Перемещено в Статус версий Python

Содействие

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

Несколько человек из сообщества Python внесли свой вклад в серию отличных руководств на Open Source Guides.

Основные разработчики и участники найдут полезными следующие руководства:

  • Как внести свой вклад в Open Source

  • Создание доброжелательных сообществ

Руководство по разработке Python:

Авторы

Документалисты

Триагеры

Основные разработчики

Установка и строительство

Помощь с документацией

Система отслеживания проблем

Обязанности

Где получить помощь

Начало работы

Рассмотрение проблемы

Журнал разработчика

Жизненный цикл запроса на слияние

Руководство по стилю

Помощь в вопросах сортировки

Принятие запросов на вытягивание

Запуск и запись тестов

reStructuredText Primer

Указатель экспертов

Цикл разработки

Решение «простых» проблем (и не только)

Перевод

Ярлыки GitHub

Мотивы и связи

После разработки Python

Проблемы GitHub для пользователей BPO

График работы основных разработчиков

Git Bootcamp и шпаргалка

Группа сортировки

Указатель экспертов

Цикл разработки

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

Предложение изменений в самом Python

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

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

  • Добавление в стандартную библиотеку

  • Изменение языка Python

Другие реализации интерпретатора

Это руководство предназначено специально для поддержки эталонного интерпретатора Python, также известный как CPython (хотя большая часть стандартной библиотеки написана на Python, ядро интерпретатора написано на C и легче всего интегрируется с C и экосистемы С++).

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

  • PyPy: интерпретатор Python, ориентированный на высокоскоростную (JIT-компиляцию) работу. на основных платформах

  • Jython: интерпретатор Python, ориентированный на хорошую интеграцию с Java. Среда виртуальной машины (JVM)

  • IronPython: интерпретатор Python, ориентированный на хорошую интеграцию с Общеязыковая среда выполнения (CLR), предоставляемая .NET и Mono

  • Stackless: интерпретатор Python, ориентированный на предоставление легкого микропотоки, оставаясь в значительной степени совместимыми со специфическими для CPython модули расширения

Ключевые ресурсы

Дополнительные ресурсы

  • Любой может клонировать исходники этого руководства. Видеть Помощь с Руководством разработчика.

  • Помощь с …
    • Исследование внутренних органов

    • Изменение грамматики CPython

    • Руководство по синтаксическому анализатору

    • Дизайн компилятора

    • Конструкция сборщика мусора

  • Опора инструмента
    • Опора GDB

    • Динамический анализ с Clang

    • Различные инструменты с файлами конфигурации, которые находятся в каталоге Misc

    • Информацию о редакторах и их конфигурациях можно найти в вики

  • обслуживание python.org

  • Искать в этом руководстве

Кодекс поведения

Обратите внимание, что все взаимодействия на Поддержка Python Software Foundation инфраструктура покрыта Кодексом поведения PSF, который включает в себя всю инфраструктуру, используемую при разработке самого Python (например, списки рассылки, средства отслеживания проблем, GitHub и т.  д.). В целом это означает, что все должны быть открытыми, внимательными и уважать других, независимо от их положения в проекте.

Полное содержание

Среды разработки — Full Stack Python

Среда разработки — это сочетание текстовый редактор и реализация среды выполнения Python. Текстовый редактор позволяет вам писать код для ваших приложений. Время выполнения реализация, такая как CPython или PyPy, предоставляет метод для выполнения вашего кода.

Текстовый редактор может быть таким же простым, как Блокнот, работающий в Windows, или более сложный интегрированная среда разработки (IDE) с проверка синтаксиса, встроенный запуск тестов и подсветка кода. Пара распространенных IDE для разработки на Python: PyCharm и VSCode, оба из которых работают на любом основном операционная система.

Зачем нужна среда разработки?

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

Изучая среды разработки, обязательно ознакомьтесь с информацией о Vim и Emacs.

Пример среды разработки

Вот что я (автор Full Stack Python, Matt Makai) используют для разработки большей части моего Python Приложения. У меня есть Macbook Pro с Mac OS X в качестве базовой операционной системы. система. Ubuntu 18.04 LTS виртуализирован сверху с параллелями. Мой код написан на vim и выполняется с помощью Выпуск Python 3.6 через командную строку. я использую виртуалэнв для создания отдельных интерпретаторов Python с собственным изолированным зависимости приложений и виртуальная обертка для быстрого переключения между интерпретаторами, созданными virtualenv.

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

Среды других разработчиков

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

  • Моя среда разработки Python имеет настройку с Sublime Text, Anaconda, PyCharm и рабочий процесс автора, как использовать разные редакторы для разных целей.

  • Моя среда разработки Python, издание 2018 г. объясняет Джейкоб Каплан-Мосс (один из первых создателей Веб-фреймворк Django) локальная установка.

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

Облачные среды разработки

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

  • CodeAnywhere — это облачная IDE, которую можно использовать в веб-браузере или на устройстве iOS или Android.

  • Cloud9 начиналась как независимая компания, а теперь принадлежит Amazon как часть Amazon Web Services.

  • code.xyz — это текстовый онлайн-редактор, созданный Stdlib, который может интегрироваться с внешними веб-API.

  • Веб-IDE GitLab интегрирован в веб-приложение GitLab для изменения вашего Файлы репозитория Git прямо в вашем браузере.

Общие ресурсы среды разработки

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

  • В сабреддите Python была хорошая ветка с разработчиками, дающими спецификации для своих сред разработки Python в этом посте на Что находится в вашей среде разработки Python?

  • У

    Real Python есть отличный подробный пост на настройка среды Sublime Text 3 как полноценная IDE.

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

  • PyCharm: хорошие стороны показывает, как повысить эффективность и продуктивность работы с этой IDE, если она ваш выбор для написания кода Python.

  • Требуется блог JetBrains PyCharm чтение, если вы используете IDE или планируете попробовать ее. Один из у основных разработчиков также есть интервью о Подкаст «Поговори со мной о Python» это стоит послушать.

  • Радость среды рабочего стола Linux говорит о средах для настольных компьютеров , а не конкретно о разработке средах, но дает объяснение, почему ядро ​​операционной системы Linux system великолепна тем, что она отделена от самой среды рабочего стола. Вы можете изменить среду рабочего стола только из командной строки без оконной системы в полноэкранную систему, предоставляемую Gnome, KDE или Unity для использования системы и выполнения вашей работы по программированию.

  • Путеводитель по Python для автостопщиков имеет страницу, посвященную средам разработки.

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

  • Среда разработки Epic с использованием подсистемы Windows для Linux предназначен для разработчиков JavaScript, но содержит множество полезных советов для разработчиков, пытающихся настроить Windows.

Далее узнать о Vim и Emacs или перейти к веб-фреймворкам?

Я хочу научиться программировать веб-приложение Python с использованием фреймворка.

Расскажите мне об использовании редактора Vim для разработки Python.

Я хотел бы узнать о кодировании Emacs для Python.

Python — Сообщество разработчиков 👩‍💻👨‍💻

Сообщество DEV 👩‍💻👨‍💻 — это сообщество из 925 047 замечательных разработчиков.

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

Создать учетную запись Войти

Твиттер Фейсбук Гитхаб Инстаграм дергаться

👋 Войдите, чтобы иметь возможность сортировать сообщения по релевантным , последним или топ .

Как избежать сбоев в работе облака с помощью YugabyteDB для приложений Python

Абхишек Мишра

Абхишек Мишра

#python #югабайтедб #база данных # распределено

Реакции 1 реакция Комментарии Добавить комментарий

7 минут чтения

5 лучших веб-сайтов для поиска следующей работы Python

Базовые коды

Базовые коды

#python #карьера

Реакции 1 реакция Комментарии Добавить комментарий

1 мин чтения

Python ETL: создание и автоматизация конвейера от Mysql до postgresql

Джеймс Вачука

Джеймс Вачука

#питон #mysql #планирование задач #постгрес

Реакции 3 реакции Комментарии Добавить комментарий

5 минут чтения

Как использовать AWS Textract в Python

дровзйозил

дровзйозил

#ocr #руководство #питон #программирование

Реакции 3 реакции Комментарии Добавить комментарий

7 минут чтения

У кого есть идея создать сайт #hacktoberfest

Уэйлон Уокер

Уэйлон Уокер

#хактоберфест #питон

Реакции 5 реакций Комментарии Добавить комментарий

2 минуты чтения

Палпатин поддерживает файл конфигурации в формате JSON

𝔹𝕒𝕥𝕦𝕙𝕒𝕟 𝕀𝕡𝕔𝕚

𝔹𝕒𝕥𝕦𝕙𝕒𝕟 𝕀𝕡𝕔𝕚

#opensource #cpp #питон #учебник

Реакции 4 реакции Комментарии Добавить комментарий

3 минуты чтения

Hacktoberfest Language Translation Contributors Требуются пользователи-статистики GitHub Action

Винсент А. Чичирелло

Винсент А. Чичирелло

#hacktoberfest #гитхаб #contributorswanted #питон

Реакции 6 реакций Комментарии 1 Комментарий

4 минуты чтения

Python-tweepy: автоматизация обратной задачи с помощью планировщика Windows

Джеймс Вачука

Джеймс Вачука

#python #твипи #твиттер # планирование задач

Реакции 5 реакций Комментарии Добавить комментарий

3 минуты чтения

Ощущение силы.

АТЛИЕН.

АТЛИЕН.

#python #новички #творчество #программирование

Реакции 2 реакции Комментарии Добавить комментарий

1 мин чтения

Дзен Python, объяснение

Анден Асителли

Анден Асителли

#python #программирование

Реакции 11 отзывов Комментарии Добавить комментарий

7 минут чтения

Игра Морской бой на основе терминала на Python3

ptrick72

ptrick72

#python #разработка игр #баш

Реакции 2 реакции Комментарии Добавить комментарий

2 минуты чтения

Защитите постоянные тома Kubernetes от случайного удаления.

Тодорис Велмахос

Тодорис Велмахос

#kubernetes #питон #руководство #devops

Реакции 8 реакций Комментарии Добавить комментарий

3 минуты чтения

Запущено с графическим интерфейсом (обновление)

Wj

Wj

#devjournal #питон #программирование

Реакции 2 реакции Комментарии Добавить комментарий

1 мин чтения

Кратко о машинном обучении

Эдем Голд

Эдем Голд

#машинное обучение #ай #питон

Реакции 3 реакции Комментарии Добавить комментарий

3 минуты чтения

SQLAlchemy с Docker — установка

Осазува Агбонзе

Осазува Агбонзе

#sqlalchemy #докер #база данных #питон

Реакции 1 реакция Комментарии Добавить комментарий

6 минут чтения

Learn Python #9 — словарь Yeah🐍

Нитин Редди

Нитин Редди

#программирование #веб #вебдев #питон

Реакции 1 реакция Комментарии Добавить комментарий

1 мин чтения

Как удалить элемент из списка Python

Абхишек Кушваха

Абхишек Кушваха

#программирование #питон #новички #учебник

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

8 минут чтения

Мое второе первое приложение

Антонов Майк

Антонов Майк

#ржавчина #питон

Реакции 1 реакция Комментарии Добавить комментарий

2 минуты чтения

Создание надежных локаторов для веб-тестирования или сбора данных

КайЙОЛО

КайЙОЛО

#учебник #питон #программирование #производительность

Реакции 2 реакции Комментарии Добавить комментарий

3 минуты чтения

Как анализировать отредактированные твиты с помощью Twitter API v2 с использованием Python

Сухем Парак

Сухем Парак

#twitter #питон

Реакции 6 реакций Комментарии Добавить комментарий

5 минут чтения

Однострочный Python для чтения файлов

qoqosz

qoqosz

#python #новички #программирование

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

1 мин чтения

Docker: выдает ошибку [Errno 2] Нет такого файла или каталога

Ашутош Мишра

Ашутош Мишра

#python

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

2 минуты чтения

Скрейп Google Arts & Culture — Исполнители: результаты All/A-Z/Time с Python

Артур Чухрай

Артур Чухрай

#вебскрейпинг #руководство #питон #программирование

Реакции 2 реакции Комментарии Добавить комментарий

13 минут чтения

Генератор случайных имен EC2 с использованием скрипта Python

Ревати Джоши

Ревати Джоши

для AWS Community Builders

#aws #питон #гитхаб

Реакции 3 реакции Комментарии Добавить комментарий

5 минут чтения

Создание инвентаризации сервисов AWS с помощью Python

Ревати Джоши

Ревати Джоши

для AWS Community Builders

#aws #питон

Реакции 4 реакции Комментарии Добавить комментарий

3 минуты чтения

Конфигурации жизненного цикла SageMaker для пользовательских сред

Танмай Прашант Ране

Танмай Прашант Ране

для AWS Community Builders

#aws #наука о данных #питон #машинное обучение

Реакции 4 реакции Комментарии Добавить комментарий

2 минуты чтения

Проблема списка

JJenus

JJenus

#программирование #питон #тестирование #алгоритмы

Реакции 1 реакция Комментарии Добавить комментарий

2 минуты чтения

Как создать файл pyproject. toml

Шэрон Фицпатрик

Шэрон Фицпатрик

#python #пипроект #пипи #учебник

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

3 минуты чтения

Ресурсы Tkinter и Tk

мугу

мугу

#питон #тк #гуи

Реакции 4 реакции Комментарии Добавить комментарий

4 минуты чтения

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

Мвенда Харун Мбаабу

Мвенда Харун Мбаабу

#python #наука о данных #инженерия данных #машинное обучение

Реакции 12 реакций Комментарии 2 комментария

2 минуты чтения

Использовать Nginx в качестве балансировщика нагрузки с этим кодом

Анкан Саха

Анкан Саха

#nginx #javascript #вебдев #питон

Реакции 4 реакции Комментарии Добавить комментарий

2 минуты чтения

Submoduler: инструмент для автоматического обновления подмодулей git через Python и Docker

джинвейкап

джинвейкап

#подмодули #гит #докер #питон

Реакции 1 реакция Комментарии Добавить комментарий

2 минуты чтения

Объединить k отсортированный список

Майкл-2509

Майкл-2509

#python #алгоритмы

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

2 минуты чтения

Как получить абсолютный путь в Python

Дэнни Стинман

Дэнни Стинман

#example #питон

Реакции 2 реакции Комментарии Добавить комментарий

3 минуты чтения

Как настроить вложения для лучшего поиска сходства

DerEchte Feuerpfeil

DerEchte Feuerpfeil

для Kern AI

#python #машинное обучение #руководство #нлп

Реакции 15 отзывов Комментарии 1 Комментарий

8 минут чтения

60 дней науки о данных и машинного обучения

Левин

Левин

#наука о данных #ай #машинное обучение #питон

Реакции 4 реакции Комментарии Добавить комментарий

2 минуты чтения

Добавить все первые элементы и вторые элементы в новый список из списка списка, используя «понимание списка»

muTheTechie

muTheTechie

#python #интервью #карьера

Реакции 3 реакции Комментарии Добавить комментарий

1 мин чтения

[Python] Сохранить статус MS Teams активным

КайЙОЛО

КайЙОЛО

#python #руководство #команды #микрософттимс

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

1 мин чтения

Найти количество вхождений `bulb` из заданной строки

muTheTechie

muTheTechie

#python #интервью #вопрос #карьера

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

1 мин чтения

Уменьшить обновление Storage SDK и веб-консоль версии 0. 5.0

Алексей Тимин

Алексей Тимин

для Reduct Storage

#новости #javascript #питон #cpp

Реакции 6 реакций Комментарии Добавить комментарий

1 мин чтения

Имитация реализации импортированных модулей Python

Леонардо Джиральди

Леонардо Джиральди

#python # юниттест

Реакции 3 реакции Комментарии Добавить комментарий

5 минут чтения

Создание генератора азбуки Морзе с помощью Pico W

Эли Холдернесс

Эли Холдернесс

для Anvil

#python #Raspberry Pi #вебдев #программирование

Реакции 2 реакции Комментарии Добавить комментарий

9 минут чтения

Универсальные контракты типа Python

Стивен Л.

Стивен Л.

#python #функциональный #plt

Реакции 3 реакции Комментарии Добавить комментарий

11 минут чтения

Калькулятор el valor de pi a través de una Simulación de Montecarlo

Анри де ла Ос

Анри де ла Ос

#python #испанский #программирование

Реакции 1 реакция Комментарии 1 Комментарий

2 минуты чтения

Преобразование аудиофайла в текст — Python

Эммануэль Ларби

Эммануэль Ларби

#python #ай #руководство #программирование

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

1 мин чтения

Implementando un Camino Aleatorio

Анри де ла Ос

Анри де ла Ос

#python #испанский

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

2 минуты чтения

Функция Append() в Python.