5 причин, почему Python всё еще крут


Содержание

Почему Python развивается так быстро: исследование Stack Overflow

Введение

Почему Python так быстро развивается? Этот язык программирования используется в самых разных целях, от веб-разработки до работы с данными и DevOps. Также стоит отметить, что в последнее время становятся все более распространенными приложения, разработанные на Python. По словам Робинсона, сам он использует язык программирования R, поэтому его очень интересует, насколько рост популярности Python затронет область, в которой он работает. Он посмотрел на базу Stack Overflow со своей точки зрения, чтобы понять, в каких областях Python будет развиваться с наибольшей скоростью, и в каких организациях он используется наиболее часто.

Этот анализ позволяет сделать два вывода. Во-первых, наиболее часто Python применяют в сферах анализа данных, машинного обучения и научных исследованиях. Среди тегов, связанных с Python, быстрее всего растет популярность pandas . Что касается того, в каких индустриях используется Python, то статистика Stack Overflow показывает, что это такие области, как электроника, производство, разработка программ, правительство и особенно популярен язык в учебных заведениях. Однако рост Python по отраслям происходит довольно равномерно. В совокупности это говорит о том, что анализ данных и машинное обучение получают распространение в различных типах компаний, и Python становится общим и популярным решением для подобных задач.

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

Что разрабатывают на Python?

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

Во-первых, можно изучить рост трафика по тегам, представляющим пакеты Python в каждой области. Можно сравнить веб-фреймворки Django и Flask с пакетами данных NumPy , matplotlib и pandas (сравнить популярность тех или иных поисковых запросов можно с помощью Stack Overflow Trends).

Pandas, пожалуй, является библиотекой Python, которая быстрее всего набирает популярность: в 2011 году она едва была представлена, однако теперь составляет почти 1% запросов в Stack Overflow. Запросы по numpy и matplotlib также выросли в сравнении с предыдущим периодом. Трафик запросов по Django оставался довольно стабильным в течение прошедшего времени, в то время как Flask немного подрос. Все это говорит о том, что развитие Python больше связано с аналитикой данных, а не с веб-разработкой.

Однако это раскрывает только часть общей картины, поскольку так можно оценивать только широко используемые библиотеки Python, специфичные для него. Python также популярен среди системных администраторов и инженеров DevOps, которые могут использовать запросы Linux, Bush и Docker, совместно с Python. Точно так же многие задачи веб-разработки могут решаться с помощью Python, без использования Django или Flask, и такие разработчики будут, скорее, использовать JavaScript, HTML или CSS в качестве «поддерживающего» тега. Невозможно просто измерить рост таких тегов, как linux , bash , javascript , но, предположим, что они связаны с Python. Таким образом, можно измерить теги посещений, связанных с Python.

Для анализа были рассмотрены только летние месяцы (июнь-август 2020 года): это позволило снизить эффект влияния обучающихся студентов, сосредоточиться на актуальном трафике и помогло уменьшить проблемы сложения трафика длительного периода времени. Были рассмотрены только зарегистрированные пользователи, которые посещали Stack Overflow не менее 50 раз за указанный период. Посетители определялись как пользователи Python, если:

  • их самый посещаемый тег был Python;
  • Python составлял не менее 20% от общего количества посещений.

Какие же теги были популярны у людей вместе с Python?

С большим отрывом лидирует тег библиотеки pandas , который является наиболее популярным, что неудивительно, ведь выше уже отмечался рост его популярности. Вторым наиболее посещаемым тегом является JavaScript, который также представляет веб-разработчиков Python (как и Django несколькими позициями ниже). Это подтверждает теорию команды исследователей: нужно рассматривать эти теги совместно с Python, а не только рост тегов, непосредственно связанных с Python в целом.

Ниже в списке можно увидеть другие «группы» технологий. Можно оценить их связь, рассматривая, какие пары тегов имеют тенденцию к корреляции: то есть, могут ли пары пользователей Python непропорционально посетить оба тега. Отфильтровав для пар теги с высокой степенью корреляции Пирсона , можно отобразить эти отношения в сетевой диаграмме ( здесь можно найти больше информации).

Можно увидеть несколько крупных групп технологий, примерно описывающих категории проблем, которые часто решаются с помощью Python. В верхнем центре — группа для анализа данных и машинного обучения: в центре pandas, Numpy и matplotlib. Они тесно связаны с такими технологиями, как R, Keras и TensorFlow. В группе ниже описывается веб-разработка, с помощью таких тегов, как JavaScript, HTML, CSS, Django, Flask и JQuery. Два других кластера, которые можно заметить, для системного администрирования / DevOps — слева (в центре кластера Linux и Bash) и для информационных технологий — справа (Spark, Hadoop и Scala).

Рост по направлениям

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

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

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

  • Специалисты по работе с данными: Pandas, NumPy, Matplotlib.
  • Веб-разработчик: JavaScript, Django, HTML.
  • Системный администратор / DevOps: Linux, Bash, Windows.
  • Неопределенный: ни один из девяти тегов не набрал более 5% от общего числа трафика.

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

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

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

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

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

Статистика по отраслям

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

Исследователи сосредоточились на двух странах, в которых рост развития Python наиболее заметен: США и Великобритания. В этих странах можно разделить трафик по отраслям (как это было сделано при сравнении AWS и Azure ).

Отрасль с наибольшим трафиком Python (с наибольшим отрывом) — академическая, включающая в себя колледжи и университеты. Возможно, причина в том, что Python часто преподают в учебных заведениях?

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

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

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

Что касается других отраслей, посмотрите , насколько Python популярен и быстро развивается в правительственном секторе, но также он широко используется в электронике и обрабатывающей промышленности. Дэвид Робинсон меньше знаком с этими отраслями, и ему было интересно, почему Python там так популярен. Этот язык все еще не сильно распространен в розничных или страховых компаниях (некоторые исследования показывают, что Java остается там доминирующим).

Этот пост в основном исследует причины роста развития Python. Был ли процесс роста трафика по тегу Python более быстрым в других отраслях?

Рост развития Python за последний год был довольно равномерно распространен по отраслям, по крайней мере в США и Великобритании. Трафик Python по каждой отрасли увеличился примерно на 2-3 процентных пункта. (Следует обратить внимание, что это означает более высокий относительный рост в отраслях, в которых он еще не был распространен, таких, как страхование и розничная торговля).

Во многих других отраслях Java остается наиболее посещаемым тегом на основе данных 2020 года, но Python сокращает дистанцию. Например, в рамках финансов (одного из крупнейших участников трафика Stack Overflows, который не принадлежит вышеуказанным отраслям) Python стал четвертым наиболее посещаемым тегом в 2020 году и вторым самым посещаемым тегом по итогам 2020 года.

Заключение: стоит ли всем переходить на Python

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

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

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

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

26 полезных приёмов и хитростей Python

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

  • Его легко изучить.
  • Он очень универсальный.
  • У него есть множество модулей и библиотек.

В процессе работы с Python каждый находит для себя какие-то полезные модули и приёмы. В этой подборке вы узнаете о некоторых полезных хитростях.

all и any

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

Часто шутят, что Python — это «исполняемый псевдокод». Однако когда вы можете писать код таким образом, становится сложно не согласиться:

bashplotlib

Хотите строить графики в консоли?

$ pip install bashplotlib

Стройте на здоровье.

collections

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

К счастью, во встроенной библиотеке Python есть модуль collections с удобными дополнительными типами данных:

Когда-нибудь задумывались о том, как заглянуть внутрь объекта в Python и посмотреть на его атрибуты? Конечно, задумывались.

XYZ school, Москва, до 250 000 ₽

Используем командную строку:

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

emoji

$ pip install emoji

И не делайте вид, что не хотите попробовать:

from __future__ import

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

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

geopy

Программистам может быть сложно ориентироваться в географии. Однако модуль geopy всё упрощает:

$ pip install geopy

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


Также в нём есть полезный класс Distance . Он высчитывает расстояние между двумя местами в удобной единице измерения.

howdoi

Зависли над какой-то проблемой и не можете вспомнить её решение? Нужно зайти на StackOverflow, но не хочется покидать терминал?

Тогда вам не обойтись без этого инструмента командной строки:

$ pip install howdoi

Задайте любой вопрос, и он постарается найти ответ на него:

Но будьте осторожны: он извлекает код из топовых ответов на StackOverflow и не всегда даёт полезную информацию:

$ howdoi exit vim

inspect

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

Ниже используется метод inspect.getsource() для вывода его собственного исходного кода. Также используется метод inspect.getmodule() для вывода модуля, в котором его определили.

Последняя команда выводит номер строки, на которой она сама находится:

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

Библиотека Jedi предназначена для автодополнения и анализа кода. Она ускоряет процесс написания кода и делает его более продуктивным.

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

Возможно, вы уже встречались с Jedi — IPython использует эту библиотеку для автодополнения.

**kwargs

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

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

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

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

Прим.перев. Также это может пригодиться при написании функций-обёрток, которые передают все аргументы другой функции.

Генераторы списков

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

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

Здесь map() применяет простую лямбда-функцию на каждом элементе x и возвращает объект map , который можно преобразовать в какой-нибудь итерируемый объект вроде списка или кортежа.

newspaper3k

Если вы ещё с ним не встречались, то приготовьтесь к тому, что модуль newspaper снесёт вам крышу.

Он даёт возможность извлекать статьи и связанные мета-данные из множества разных источников. Можно извлечь изображения, текст и имена авторов.

В нём даже есть встроенная NLP-функциональность.

Поэтому, если вы собирались использовать BeautifulSoup или другую библиотеку для вебскрапинга в своём следующем проекте, лучше сэкономьте своё время и силы и установите newspaper:

$ pip install newspaper3k

Перегрузка операторов

В Python есть поддержка перегрузки операторов — одной из тех штук, о которых говорят все настоящие computer-scientis’ы.

На самом деле идея проста. Когда-нибудь задумывались, почему Python позволяет использовать оператор + как для сложения чисел, так и для конкатенации строк? За этим как раз и стоит перегрузка операторов.

Вы можете определять объекты, которые используют стандартные символы операторов любым образом. Это позволяет применять их в контексте объектов, с которыми вы работаете:

pprint

Стандартная функция Python print() делает своё дело. Но если попытаться вывести какой-нибудь большой вложенный объект, результат будет выглядеть не очень приятно.

Здесь на помощь приходит модуль из стандартной библиотеки pprint (pretty print). С его помощью можно выводить объекты со сложной структурой в читабельном виде.

Мастхэв для любого Python-разработчика, работающего с нестандартными структурами данных:

Queue

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

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

Очереди «первым пришёл — первым ушёл» («first in, first out», FIFO) позволяют извлекать объекты в порядке их добавления. Из очередей «последним пришёл — первым ушёл» («last in, first out», LIFO) можно извлекать последние добавленные объекты.

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

Здесь можно посмотреть на пример использования очередей в многопоточном программировании на Python.

__repr__

При определении класса или объекта полезно добавлять «официальный» способ представления объекта строкой. Например:

Это сильно упрощает отладку. Вот всё, что вам нужно сделать:

Цукерберг рекомендует:  Android - Python for android

Прим.перев. Метод __repr__() позволяет определять строковое представление, предназначенное для программиста и удобное при использовании во время отладки, а метод __str__() позволяет определять понятное пользователю строковое представление, которое можно отображать в интерфейсе программы.

Python — отличный скриптовый язык. Но иногда стандартные библиотеки os и subprocess вызывают только головную боль.

Библиотека sh может стать приятной альтернативой.

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

Прим.перев. Библиотека sh поддерживает только платформы Linux и macOS; для работы на Windows вам придётся поискать другой инструмент.

Аннотации типов

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

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

С версии Python 3.5 при определении функции можно добавлять аннотации типов:

Можно даже определять псевдонимы типов:

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

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

Стандартный модуль uuid — быстрый и простой способ сгенерировать UUID (universally unique identifier, глобально уникальный идентификатор).

Так мы создаём случайное 128-битное число, которое почти наверняка будет уникальным.

Существует более 2¹²² возможных UUID. Это более 5 ундециллионов или 5,000,000,000,000,000,000,000,000,000,000,000,000.

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

Вполне недурно для двух строк кода.

Виртуальные среды

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

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

Теперь вы можете иметь разные независимые версии Python на одной машине.

wikipedia


У Wikipedia есть классное API, которое позволяет получить доступ к непревзойдённому источнику полностью бесплатной информации.

Модуль wikipedia делает доступ к этому API чуть ли чрезмерно удобным:

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

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

Конечно, чувство юмора не заканчивается на документации. Попробуйте ввести следующую строку:

Оставайся собой, Python. Оставайся собой.

YAML означает «YAML — не язык разметки» («YAML Ain’t Markup Language»). Это язык форматирования данных, являющийся надмножеством JSON.

В отличие от JSON, YAML может хранить более сложные объекты и ссылаться на собственные элементы. Также там можно писать комментарии, что делает YAML подходящим для конфигурационных файлов.

Модуль PyYAML позволяет использовать YAML в Python. Установить можно так:

$ pip install pyyaml

А затем импортировать:

PyYAML позволяет хранить любые Python-объекты и экземпляры любых пользовательских классов.

Напоследок ещё одна клёвая штука. Когда-нибудь возникала необходимость создать словарь из двух списков?

Встроенная функция zip() принимает несколько итерируемых объектов и возвращает последовательность кортежей. Каждый кортеж группирует элементы объектов по их индексу.

Можно провести операцию, обратную zip() , с помощью zip(*) .

А какие приёмы или полезные библиотеки знаете вы? Делитесь в комментариях.

Почему Python?

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

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

Что такое Python?

Python это язык программирования общего назначения, нацеленный в первую очередь на повышение продуктивности самого программиста, нежели кода, который он пишет. Говоря простым человеческим языком, на Python можно написать практически что угодно (веб-/настольные приложения, игры, скрипты по автоматизации, комплексные системы расчёта, системы управления жизнеобеспечением и многое многое другое) без ощутимых проблем. Более того, порог вхождения низкий, а код во многом лаконичный и понятный даже тому, кто никогда на нём не писал. За счёт простоты кода, дальнейшее сопровождение программ, написанных на Python, становится легче и приятнее по сравнению с Java или C++. А с точки зрения бизнеса это влечёт за собой сокращение расходов и увеличение производительности труда сотрудников.

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

Код на Java использует обновлённый интерфейс для работы с системой ввода-вывода. Старый способ выглядел бы ещё ужаснее :)

Кто использует Python?

Грош цена даже самому продвинутому языку программирования, если до него никому нет дела. Одним из составляющих успеха любой технологии является сообщество, созданное вокруг неё. Именно оно предопределяет будущий вектор развития путём совместных усилий. Сообщество вокруг Python одно из самых сильных в мире IT. Это сложный хорошо организованный и постоянно развивающийся организм. Помимо сотни тысяч индивидуальных разработчиков и небольших софтверных компаний, Python поддерживают такие гиганты IT как:

  • Google
  • Dropbox
  • Mozilla
  • Facebook
  • Yandex
  • Red Hat
  • Microsoft (с недавних пор очень активно, в частности с Visual Studio)
  • Intel (активно ведёт исследовательскую работу в области параллельных вычислений на Python)

. и многие многие другие. Впечатляет, не правда ли? Что же касается крупных и популярных проектов, написанных на Python то это такие монстры как:

  • YouTube (большая часть кодовой базы полностью на Python)
  • Первая версия поискового паука Google была написана на Python, а позже, из-за чрезвычайно высокой нагрузки и требований к скорости, была переписана на C++.
  • Десктопный клиент Dropbox
  • Reddit
  • Instagram (500M юзеров на Python)
  • Bitbucket (Python 2.7 и Django 1.7.11)
  • EVE Online MMOPG
  • Quora
  • Spotify
  • Критические сервисы PayPal, обрабатывающие до 2 миллиардов запросов в сутки. Подробнее можно узнать в подкасте от TalkPython, выпуск #54
  • Сервисы Mozilla
  • Популярный сервис идей Pinterest
  • Сервис комментариев Disqus (использую в этом блоге, сервис реализован на Django)
  • Внутренние сервисы Facebook (см. постер в моей заметке о PyCon)
  • Система контроля версий Mercurial (до некоторых пор разработчики Python использовали её в своей работе)
  • Сервисы Wargaming

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

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

В заметке про книгу «Структура и Интерпретация Компьютерных Программ«, я писал о том, что она была взята за основу в качестве учебного материала для вводного курса по программированию в MIT, компьютерным языком на тот момент выступал диалект Lisp — Scheme. Времена меняются, сейчас в качестве цифрового lingua franca лидирует что. Правильно, Python. Именно его используют в качестве надёжного инструмента в столь удивительном ремесле.

Недостатки Python

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

Скорость

Одним из главных недостатков является его относительно низкая скорость выполнения. Python является языком с полной динамической типизацией, автоматическим управлением памятью. Если на первый взгляд это может казаться преимуществом, то при разработке программ с повышенным требованием к эффективности, Python может значительно проигрывать по скорости своим статическим братьям (C/C++, Java, Go). Что касается динамических собратьев (PHP, Ruby, JavaScript), то здесь дела обстоят намного лучше, Python в большинстве случаев выполняет код быстрее за счет предварительной компиляции в байт-код и значительной части стандартной библиотеки, написанной на Си. На конференциях мне довелось пообщаться с ребятами из крупных компаний вроде Wargaming, у многих из них наблюдается тренд перехода в сторону статики, и чаще всего это Go, Rust.

Интересный доклад про скорость и оптимизацию CPython (родная реализация языка на Си) был прочитан на PiterPy 2015 в Санкт-Петербурге:

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

Для начинающих программистов, язык программирования с динамической типизацией на первый взгляд (и на второй и даже на третий) может казаться отдушиной, райским наслаждением, особенно для тех, кто ранее имел дело со «статикой». Но есть и обратная сторона луны. С ростом кодовой базы (а это часто неизбежный процесс в успешных проектах), следить за типом передаваемых друг другу данных бывает очень сложно (а при отсутствии внятных доков и тестов практически невозможно), отсюда появляются проблемы, когда, например, у None пытаются вызвать метод или обратиться к атрибуту в процессе выполнения кода. Для решения такого рода проблем динамические языки обрастают всевозможными костылями, свистелками и перделками в виде type annotations, проектов mypy по статическому анализу кода и так далее. Это же в свою очередь накладывает негативный оттенок на эстетическую сторону кода.

В связи с ограничениями языка, появляются альтернативные реализации интерпретаторов: PyPy, Pyston, Jython, Cython и многие другие. Сейчас тренд хорошо заметен именно в эту сторону, например Pyston разрабатывается в стенах т.н. Мекки Python программистов — компании Dropbox :)

Заключение

Несмотря на ряд проблем исторически присущих Python, он продолжает оставаться лидирующим инструментом в ряде ниш:

  • Разработка веб-приложений (тут у нас бесусловный лидер в виде Django).
  • Анализ данных и машинное обучение (пакеты scipy, scikit-learn, pandas, numpy признанные мировым ученым сообществом).
  • Введение в программирование (pygame, turtle хорошо помогают мотивировать детей начинать кодить).
  • Быстрое прототипирование идей в бизнесе за счёт обилия готовых библиотек, низкого порога вхождения в язык и высокой продуктивности программистов, пишущих на Python.
  • Написание скриптов (сценариев) для автоматизации задач. Python по-умолчанию поставляется со всеми дистрибутивами unix-like систем и является отличной заменой Bash во всех смыслах.

Наверняка я ещё что-то забыл. В общем, Python рулит!

5 причин для изучения Python

1. Легко учить

Давайте посмотрим правде в глаза. Изучение программного языка не звучит столь же захватывающе как соревнование по брейк-дансу на авианосце. К счастью, Python был разработан с принятием во внимание новичков в данной области. Python читается как детсадовская математика и легко воспринимается для непрофессиональных глаз. Использование общих выражений устранило необходимость в утомительных переменных и непривлекательных фигурных скобках. Python также требует меньше кода для выполнения основных задач, что делает его экономичным для изучения. Код Python часто в 3 раза короче, чем Java, и в 5 раз меньше, чем C ++. Кроме того, Python код может иногда восприниматься как обычный английский язык.

2. Питон повсюду

Python доступен на каждом компьютере в операционной системе Linux и MacOS без необходимости устанавливать что-либо. Вы можете начать программировать прямо сейчас. Если вы используете Windows, вам просто нужно установить интерпретатор Python, и у вас все настроено. Просто откройте ваш любимый текстовый редактор и начните писать любой код питона, это легко.
Вы также можете найти Питон на встраиваемых устройствах, как Raspberry Pi (ссылка или видео).
Raspberry Pi – это недорогой микрокомпьютер с размером в карту, который используется для удивительного разнообразия захватывающих сделай-сам вещей, таких как как роботов, автомобилей с дистанционным управлением и игровых приставок. С помощью Python в качестве своего основного языка программирования, Raspberry Pi используется, чтобы построить радиоприемники, фотоаппараты, игровые автоматы и кормушки для домашних животных! С Raspberry Pi в тренде, существует бесчисленное множество DIY проектов, учебных пособий и книг для онлайн выбора. Это поможет вам продвинуться от ваших начальных “привет мир” к тому, чем вы действительно сможете потом гордиться. Поскольку вы не собираетесь в ближайшее время строить мини вольтрон, чувство удовлетворения, которое вы получите от завершения одного из этих DIY do it yourself проектов, будет мотивировать вас на дальнейшие подвиги, превышающие такие задачи как автоматизация ASCII игры крестики-нолики.

3. Первый шаг

Python может быть вашей первой ступенькой в программировании вселенной. Работодатели ищут полностью сложенных программистов, и Python поможет вам попасть в их число. Python является объектно-ориентированным языком, равно как и JavaScript, C ++, C #, Perl, Ruby, и другие ключевые языки программирования. Он также имеет некоторые понятия заимствованные из функциональных языков, кроме того, может быть использован для написания программ в декларативном стиле. Для людей, которые планируют стать разработчиками программного обеспечения, изучение данного типа программирования в одной среде поможет вам легко адаптироваться в других областях.

4. Онлайн поддержка

Python сообщество очень велико. С самого начала, Python является открытым исходным кодом, что означает, что каждый способен увидеть его исходный код: https://hg.python.org/cpython

HEAD=dobj и историю всех версий. Это также означает, что любой человек может стать разработчиком Python и вносить свой вклад. Python имеет огромную экосистему с бесплатными библиотеками с открытыми исходными кодами, которую любой может легко начать использовать. Инструменты Python были разработаны, чтобы быть простыми и доступными. Например, вы можете установить Matplotlib, что очень легко сделать, а затем с помощью всего нескольких строк кода, благодаря силе Matplotlib библиотеке, вы можете рисовать графики с цветом, 3D.

На их сайте вы можете получить доступ к сотням примеров: http://matplotlib.org/examples/mplot3d/hist3d_demo.html является лишь одним из них.
Конечно же, исходный код для библиотеки Matplotlib доступен, https://github.com/matplotlib/matplotlib, также как для многих библиотек Python, так что, и вы можете предложить свои собственные изменения.

5. Используем в онлайн

Веб-разработка по-прежнему находится в тренде и бурно развивается. С обширными возможностями языка Python, вы тоже сможете принести свой вклад.
Django, популярный фреймворк для веб-приложений с открытым исходным кодом, написанная на Python, – это основа таких сайтов, как, Pinterest The New York Times, The Guardian, и Instagram. Django – это полная структура, которая принимает на себя сложность веб-разработки, в время давая вам контроль над тем, чем вы желаете. Являясь открытым исходным кодом, вся информация, необходимая для начала работы, может быть найдена на сайте DjangoProject.com.

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

Когда использовать List Comprehension в Python

Перевод оригинальной статьи: James TimminsWhen to Use a List Comprehension in Python

Прим. переводчика: В русской терминологии нет общепризнанного перевода list comprehension. Гугл его переводит как списковое включение или абстракция списков. Хотя наиболее часто можно встретить фразу генератор списков, но мне кажется это не совсем правильно, так как в Python есть отдельное понятие генератора. По моему, возможно наиболее подходящий перевод был бы представление списков. Поэтому в этой статье эта фраза будет использоваться без перевода, либо будет переводится следующим образом: list comprehension представление списков, set comprehension представление множества и dictionary comprehension представление словаря)

Содержание

Спонсор поста ХОСТИНГ FOZZY БЫСТРЕЕ БЫСТРОГО
https://fozzy.com/ru/
Fozzy — компания, созданная профессионалами хостинг-индустрии, в рамках холдинга XBT — одного из мировых лидеров хостинга, представленного по всему миру: США, Нидерланды, Люксембург, Россия, Сингапур, Индия.
Fozzy работает честно и открыто. Мы не продаем волшебные «безлимитные тарифы» и «заоблачные возможности». Информация о наших серверах, технологиях и дата-центрах открыта для всех.

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

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

В этом уроке вы узнаете, как:

  • Переписать циклы и вызовы map() с использованием list comprehension
  • Выбрать между comprehensions, циклами и вызовами map()
  • Использовать comprehensions с условной логикой
  • Использовать comprehensions, для замены filter()
  • Профилировать свой код для решения вопросов производительности

Как создаются списки в Python


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

Использование цикла for

Наиболее распространенным типом цикла является цикл for. Использование цикла for можно разбить на три этапа:

  1. Создание пустого списка.
  2. Цикл по итерируемому объекту или диапазону элементов range.
  3. Добавляем каждый элемент в конец списка.

Допустим на надо создать список squares, то эти шаги будут в трех строках кода:

Здесь мы создаем пустой список squares. Затем используем цикл for для перебора range(10). Наконец умножаем каждое число отдельно и добавляете результат в конец списка.

Использование объектов map()

map() предоставляет альтернативный подход, основанный на функциональном программировании. Мы передаем функцию и итерируемый объект (iterable), а map() создаст объект. Этот объект содержит выходные данные, которые мы получаем при запуске каждого итерируемого элемента через предоставленную функцию.

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

Здесь у вас есть итерируемый объект txns (в нашем случае простой список) и функция get_price_with_tax(). Мы передаем оба этих аргумента в map() и сохраняем полученный объект в final_prices. Мы можем легко преобразовать этот объект map в список, используя list().

Использование List Comprehensions

List comprehensions – это третий способ составления списков. При таком элегантном подходе мы можем переписать цикл for из первого примера всего в одну строку кода:

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

Каждое представление списков в Python включает три элемента:

  1. expression какое либо вычисление, вызов метода или любое другое допустимое выражение, которое возвращает значение. В приведенном выше примере выражение i * i является квадратом значения члена.
  2. member является объектом или значением в списке или итерируемым объекте (iterable). В приведенном выше примере значением элемента является i.
  3. iterable список, множество, последовательность, генератор или любой другой объект, который может возвращать свои элементы по одному. В приведенном выше примере iterable является range(10).

Поскольку требования к expression (выражению) настолько гибки, представление списков хорошо работает во многих местах, где вы будете использовать map(). Вы так же можем переписать пример ценообразования:

Единственное различие между этой реализацией и map() состоит в том, что list comprehension возвращает список, а не объект map.

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

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

Цукерберг рекомендует:  Обучение - Вопрос об cprofile

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

Это основная причина, почему list comprehension считаются Pythonic, поскольку Python включает в себя простые и мощные инструменты, которые вы можете использовать в самых разных ситуациях. Дополнительным преимуществом является то, что всякий раз, когда вы используете представления списков, вам не нужно запоминать правильный порядок аргументов, как при вызове map().

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

Погружаемся в Comprehensions

Чтобы понять всю ценность, которую могут предоставить list comprehensions, полезно понять их диапазон возможных функций. Мы также коснемся изменений, которые были внесены в Python 3.8.

Использование условной логики

Ранее вы видели это шаблон для создания представлений списка:

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

Здесь наше условное утверждение предшествует закрывающей скобке.

Условные выражения позволяют отфильтровывать нежелательные значения, без вызова filter():

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

Условие может содержать любое допустимое выражение. Если вам нужен более сложный фильтр, вы можете даже переместить условную логику в отдельную функцию:

Здесь мы создаем сложный фильтр is_consonant() и передаете эту функцию как условный оператор для нашего представления списка. Обратите внимание, что значение элемента i также передается в качестве аргумента нашей функции.

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

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

Здесь, наше выражение i содержит условный оператор, if i> 0 else 0. Это говорит Python выводить значение i, если число положительное, но менять i на 0, если число отрицательное. Если это окажется недостаточно, то может быть полезно рассматривать условную логику как свою отдельную функцию:

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

Использование Set и Dictionary Comprehensions

Хотя list comprehension в Python является распространенным инструментом, вы также можете создавать множественные и словарные представления (set and dictionary comprehensions). set comprehension почти точно такое же, как представление списка. Разница лишь в том, что заданные значения обеспечивают, чтобы выходные данные не содержали дубликатов. Вы можете создать set comprehension, используя фигурные скобки вместо скобок:

В нашем примере set comprehension выводит все уникальные гласные, которые он нашел в quote. В отличие от списков, наборы не гарантируют, что элементы будут сохранены в определенном порядке. Вот почему первым членом набора является a, хотя первый гласный в quote – i.

Dictionary comprehensions аналогично, с дополнительным требованием определения ключа:

Чтобы создать словарь квадратов, воспользуемся фигурными скобками (<>), а также парой ключ-значение (i: i * i) в своем выражении.

Использование оператора Walrus

Python 3.8 представил выражение присваивания (assignment expression), также известное как оператор walrus (оператор моржа). Чтобы понять, как он используется, рассмотрим следующий пример.

Скажем, нам нужно сделать десять запросов к API, которое будет возвращать данные о температуре. Мы хотим вернуть только результаты, которые превышают 100 градусов по Фаренгейту. Предположим, что каждый запрос будет возвращать разные данные. В этом случае в Python нет способа использовать list comprehension для решения проблемы. Выражение шаблона expression for member in iterable (if conditional) не позволяет условию назначить данные переменной, к которой можно обращаться в выражение.

Оператор walrus решает эту проблему. Это позволяет нам запускать выражение, одновременно назначая выходное значение переменной. В следующем примере показано, как это возможно, используя get_weather_data() для генерации поддельных данных о погоде:

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

Когда не использовать List Comprehension в Python

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

Остерегайтесь вложенных Comprehensions

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

Мы создали внешнюю коллекцию temps как представление словаря. Выражение представляет собой пару ключ-значение, которая содержит еще одно comprehension. Этот код быстро сгенерирует список данных для каждого города в cities.

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

Внешнее представление списка [… for _ in range(6)] создает шесть строк, в то время как внутреннее представление списка [i for i in range(5)] заполняет каждую из этих строк значениями.

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

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

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

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

Используйте Генераторы для больших наборов данных

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

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

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

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

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

Приведенный выше пример все еще требует много времени для выполнения, но программа не зависнит так как операции выполняются отложено. Из-за отложенных вычислений значения рассчитываются только по явному запросу. После того, как генератор выдаст значение (например, 567 * 567), он может добавить это значение к текущей сумме, затем отбросить это значение и сгенерировать следующее значение (568 * 568). Когда функция sum запрашивает следующее значение, цикл начинается заново. Для этого процесса необходим небольшой объем памяти.

map() также работает отложено, что означает, что память не будет проблемой, если вы решите использовать ее в этом случае:

Вам решать, предпочитаете ли вы выражение генератора или map().

Профилирование для оптимизации производительности

Итак, какой подход быстрее? Стоит ли использовать списки или одну из их альтернатив? Вместо того, чтобы придерживаться единого правила, которое справедливо во всех случаях, более полезно спросить себя, имеет ли значение производительность в ваших конкретных обстоятельствах. Если нет, то обычно лучше выбрать подход, который приведет к чистому коду!

Если вы реализуете сценарии, где важна производительность, то обычно лучше профилировать различные подходы и смотреть на данные. timeit – полезная библиотека для определения времени выполнения кусков кода. Вы можете использовать timeit для сравнения времени выполнения map(), циклов и списков:


Здесь мы определяем три метода, каждый из которых использует свой подход для создания списка. Затем мы сообщаем timeit, что каждая из этих функций должна запускаться по 100 раз. timeit возвращает общее время, необходимое для выполнения этих 100 выполнений.

Как показывает код, наибольшее различие заключается в подходе на основе цикла и map(), причем выполнение цикла занимает на 50% больше времени. То, имеет ли это значение, зависит от потребностей вашего приложения.

Заключение

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

Теперь вы можете:

  • Упростите циклы и вызовы map() с помощью использования декларативный представлений
  • Использовать условную логику в представление
  • Создать set и dictionary представления
  • Определить, когда ясность кода или производительность диктует альтернативный подход

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

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

Упражнение на закрепление

Использование представление списков в Python

Почему питон — плохой язык

Ну, первое — это, скорее, констатация факта. Питон — это Бейсик нашего времени. Как Бейсик (и, не так успешно, Pascal), Питон начался как язык для обучения школьников, и потом проник в индустрию. Само по себе это не хорошо и не плохо, просто факт.

Низкая производительность Питона — также нельзя сказать, что так уж плохо, потому что 90% времени исполняются 10% кода, а 81% времени — соответственно, 1%. И, переписав этот 1% на С, мы получим почти такой же выигрыш, как если бы писали всю программу на C с самого начала.

Но перейдём, собственно, к проблемам.

1. GIL. Ребята, вы серьезно предлагаете для промышленного использования среду исполнения с такой штукой?
2. Замена байтовых строк на юникодные при переходе от питона 2 к питону 3. Обратная совместимость? Не, не слышали.
3. Скобочки у print. Дебилизм, конечно. Но — .
4. При таком трепетном отношении к обратной совместимости, довольно странно наблюдать три разных вида оператора format с разными синтаксисами форматной строки.
5. . И всю эту шнягу с «объектами старого типа» и «объектами нового типа».
6. Тому, кто будет мне рассказывать про то, как в питоне все хорошо и симметрично и все на свете объект, я предложу выпить из дуршлага получить ссылку на переменную. Или на элемент массива. Что это за симметрия, когда все объект, а переменная — не объект?
7. Еще на тему консистентности. Конструкция [i for i in range(10)] возвращает список. Логично. Думаете, (i for i in range(10)) вам вернет тупль? Хе хе хе.
8. И еще хуже. [True]*10 вернет вам список из 10 значений True. Логично. Теперь попробуйте аналогичным образом проинициализировать двумерный массив 10×10. Да, у вас получится матрица 10×10 из значений True. Но попробуйте в ней что-нибудь поменять.
9. Почему функции и генераторные объекты определяются одним и тем же ключевым словом def? Ведь это объекты разной природы и с разными ограничениями на возможное использование. Но единственный способ отличить их один от другого в коде — это искать ключевое слово yield, которое может быть где угодно. Ключевых слов пожалели? Нет, серьезно?
10. Почти на ту же тему: какой смысл в разрешении использовать в качестве декоратора любую функцию? Ведь результат приложения «нормальной» функции как декоратора, практически по определению, деструктивен. Осмысленно работающие декораторы надо писать специально. Опять ключевых слов пожалели?
11. Приватные атрибуты через подчерк. Мне снова сложно сказать что-то, кроме «ребята, вы серьезно?».
12. У атрибутов с одним подчерком имена не манглятся. А с двумя подчерками — манглятся. Кто тут что говорил про простоту, логику и консистентность?
13. Управление видимостью имен на уровне модуля — вообще какой-то горький катаклизм. Нет, я понимаю, что импорты с перечислением спасают от полной катастрофы. Но для больших модулей это как-то довольно грустно. И все-таки, почему бы не разрешить было разработчику модуля описывать нормально выглядящие (без кучи подчерков) имена как неэкспортируемые? Все равно же иногда вы делаете манглинг, но почему только в одном случае, а не в других, когда это было бы полезно?
14. Идиома __name__ вообще не имеет иного объяснения, кроме «ключевых слов пожалели».
15. И еще на тему пространств имен:

Ну ладно, здесь еще легко понять, в чем дело. Но представим себе большой проект с кучей существующих файлов, и вы подключаете к нему ранее не использовавшуюся библиотеку, а внутре этой библиотеки используется еще библиотека, совпадающая по имени с одним из файлов вашего проекта. В С над этой проблемой еще в 70е годы задумались и решение предложили, а тут — .
16. И вообще, динамическая сборка с принудительным началом поиска в текущем каталоге — это довольно серьезная дыра в безопасности.
17. Классы с наследованием, которые не зовут конструкторы родителей — это сильная и неожиданная идея.
18. Синтаксис для обращения к атрибутам предковых классов тоже не вызывает ассоциаций с простотой и логичностью.
19. Ребята, вы, наверное, не в курсе, но во всех нормальных языках со смесью динамической и статической типизаций, статические типы дают повышение производительности.
20. Совсем уж очевидный вопрос: ребята, а где у вас цикл с постусловием. while True: . if x break? Вы бы тогда уж и goto бы добавили, для полной чистоты идеологии?
21. Ну и на сладкое — это, конечно, синтаксис с выравниванием. Да, идея, возможно, была благая (заставить учащихся выравнивать код красиво). Но в результате мы имеем язык, на котором можно писать только в IDE или, хотя бы, LSE. Потому что простые вещи — например, окружить цикл условным оператором или вынести кусок кода в функцию — осуществимы только в IDE с поддержкой рефакторинга.
22. По той же причине, «пробелы vs табуляции» из повода для хихонек и религиозных войн превращается в мощный источник не только синтаксических, но и семантических ошибок (видя табуляцию не на месте, далеко не всегда можно понять, что же тут хотели написать).
23. А вы задумывались, почему в Питоне нету многострочных лямбд? Хе хе хе.

С чего начать программирование на Python

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

Что такое программирование на Python?

Перед началом познакомиться с самим языком.
Python — язык общего назначения. Имеет приложения разных направлений: веб-разработки (например, Django и Bottle ), научных и математических вычислений ( Orange, SymPy, NumPy ) для настольных графических пользовательских интерфейсов ( Pygame, Panda3D ).

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

История Python

Python старый язык, созданный Гвидо Ван Россумом. Разработка началась в конце 1980-х., и в феврале 1991 года вышла первая версия.

Зачем создан Python?
В конце 1980-ых, Гвидо Ван Россум работал над группой операционных систем Amoeba. Он хотел использовать интерпретируемый язык, такой как ABC (у ABC простой и доступный в понимании синтаксис), который мог бы получить доступ к системным вызовам Amoeba. Поэтому он решил создать масштабируемый язык. Это привело к созданию нового языка, у которого позже появилось название Python.

Почему выбрали Python
Нет. Он не назван в честь опасной змеи. Россум был фанатом комедийного сериала в конце 70-х. Название “Python” было взято из этого же сериала “Monty Python’s Flying Circus” (Летающий цирк Монти Пайтона).

Дата выпуска версий языка

Версия Дата выпуска
Python 1.0 (первый стандартный выпуск) Python 1.6 (последняя выпущенная версия) Январь 1994
Сентябрь 5, 2000
Python 2.0 (представлены списки) Python 2.7 (последняя выпущенная версия) Октябрь 16, 2000
Июль 3, 2010
Python 3.0 (Сделан акцент на удаление дублирующих конструкций и модулей) Python 3.7 (Последняя обновленная версия) Декабрь 3, 2008
настоящее время

Особенности программирования на Python

  1. Простой язык, легкий и доступный в изучении
    У Python читаемый синтаксис. Гораздо проще читать и писать программы на Python по сравнению с другими языками, такими как: C++, Java, C# . Python делает программирование интересным и позволяет сфокусироваться на решении, а не синтаксисе.
    Для новичков, отличный выбором — начать изучение с Python.
  2. Бесплатный и с открытым кодом
    Можно свободно использовать и распространять программное обеспечение, написанное на Python, даже для коммерческого использования. Вносить изменения в исходный код Python.
    Над Python работает большое сообщество, постоянно совершенствуя язык в каждой новой версии.
  3. Портативность
    Перемещайте и запускайте программы на Python из одной платформы на другую без каких-либо изменений.
    Код работает практически на всех платформах, включая Windows, Mac OS X и Linux.
  4. Масштабируемый и встраиваемый
    Предположим, что приложение требует повышения производительности. Вы можете с легкостью комбинировать фрагменты кода на C/C++ и других языках вместе с кодом Python.
    Это повысит производительность приложения, а также дает возможность написания скриптов, создание которых на других языках требует больше настроек и времени.
  5. Высокоуровневый, интерпретируемый язык
    В отличии от C/C++ , вам не нужно беспокоиться о таких сложных задачах, как “сборка мусора” или управление памятью.
    Так же, когда вы запускаете код Python, он автоматически преобразует ваш код в язык, который понимает компьютер. Не нужно думать об операциях более низкого уровня.
  6. Стандартные библиотеки для решения общих задач
    Python укомплектован рядом стандартных библиотек, что облегчает жизнь программиста, так как нет необходимости писать весь код самостоятельно. Например, что бы подключить базу данных MySQL на Web сервер, используйте библиотеку MySQLdb , добавляя ее строкой import MySQLdb .
    Стандартные библиотеки в Python протестированы и используются сотнями людей. Поэтому будьте уверенны, они не нарушит работу приложения.
  7. Объектно-ориентированный
    В Python все объект. Объектно-ориентированное программирование (ООП) помогает решить сложную проблему интуитивно.
    Разделяйте сложные задачи на маленькие части, создавая объекты.

Приложения на Python

Веб-приложения
Создание масштабируемых веб-приложений (Web Apps), с помощью фреймворков и CMS (Система управления содержимым), созданных на Python. Популярные платформы для создания Web приложений: Django, Flask, Pyramid, Plone, Django CMS .
Сайты, такие как Mozilla, Reddit, Instagram и PBS написаны на Python.

Научные и цифровые вычисления
У Python много библиотек для научных и математических вычислений. Есть библиотеки, такие как: SciPy и NumPy которые используются для общих вычислений. И специальные библиотеки, такие как: EarthPy для науки о Земле, AstroPy для астрономии и так далее.
Также, язык часто используется в машинном обучении, анализе и сборе данных.

Создание прототипов программного обеспечения
Python медленный, в сравнении с компилированными языками, такими как C++ и Java. Это не очень практичный выбор, если ресурсы ограничены и при этом нужна максимальная эффективность.
Тем не менее, Python — прекрасный язык для создания прототипов. Используйте Pygame (библиотека для создания игр), чтобы создать для начала прототип игры. Если прототип понравился, используйте язык C++ для создания реальной игры.

Тест на знание python

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

4 причины выбрать Python в качестве первого языка

  1. Простой элегантный синтаксис
    Программировать на Python интересно. Легче понять и написать код на Python. Почему? Синтаксис кажется естественным и простым. Возьмите этот код для примера:

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

  • Не слишком строгий
    Не нужно определять тип переменной в Python. Нет необходимости добавлять “;” в конце строки.
    Python принуждает следовать методам написания читаемого кода (например, одинаковым отступам). Эти мелочи могут значительно облегчить обучение новичкам.
  • Выразительность языка
    Python позволяет писать программы с большей функциональностью и с меньшим количеством строк кода. Вот ссылка на исходный код игры Tic-tac-toe с графическим интерфейсом и противником в лице смарт-компьютера менее чем на 500 строк кода. Это просто пример. Вы будете удивлены, как много можно сделать с Python, как только изучите основы языка.
  • Большое сообщество и поддержка
    У Python большое сообщество с огромной поддержкой. Множество активных форумов в интернете, которые помогут, когда возникают вопросы. Вот некоторые из них:
    • Python на Хабре
    • Вопросы о Python на Тостер
    • Вопросы о Python на Stack Overflow
  • Первая программа на Python

    Часто программа, которая называется “Hello, World!” используется для демонстрации языка программирования новичкам. “Hello, World!” это простая программа, которая выводит “Hello, World!”

    Python — один из простейших языков для изучения и создание программы “Hello, World!” такое же простое, введите print(«Hello, World!») . Поэтому, мы напишем другую программу.

    Программа сложения двух чисел

    Как работает эта программа?

    Строка 1: # Сложите два числа
    Строка, начинающаяся с # в программировании на Python — комментарий.
    Комментарии используются для описания цели строки кода. Это поможет вам, так же как и другим программистам понять смысл кода. Они игнорируются компиляторами и интерпретаторами.

    Строка 2: num1 = 3
    Здесь, num1 — переменная. Вы можете сохранять значение в переменной. В этом случае, 3 сохраняется в переменной.

    Строка 3: num2 = 5
    Аналогично, 5 сохраняется в переменной num2 .

    Строка 4: sum = num1 + num2
    Переменная num2 прибавляется к num1 с помощью оператора + . Результат сложения сохраняется в другой переменной sum .

    Строка 5: print(sum)
    Функция print() выводит результат на экран. В нашем случае, она выводит на экран 8.

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

    Для представления инструкции в Python, используется новая строка (enter). Использование “;” в конце утверждения не требуется (в отличии C/C++, JavaScript, PHP ).
    Вместо фигурных скобок < >, используются отступы (4 пробела) для перехода на новый блок.

    Научитесь самостоятельно программировать на Python

    Изучите Python с помощью PythonRU.com

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

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


    Рекомендуемые книги

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

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

    Обложка Описание
    Изучаем Python
    Четвертое издание «Изучаем Python» – это учебник, написанный доступным языком, рассчитанный на индивидуальную скорость обучения. В книге представлены основные типы объектов в языке Python, порядок их создания и работы с ними, а также функции как основной процедурный элемент языка.
    Программирование на Python 3. Подробное руководство
    Автор начинает с описания ключевых элементов Python, знание которых необходимо в качестве базовых понятий. Затем обсуждаются более сложные темы, поданные так, чтобы читатель мог постепенно наращивать свой опыт: распределение вычислительной нагрузки между несколькими процессами и потоками, использование сложных типов данных, управляющих структур и функций, создание приложений для работы с базами данных SQL и с файлами DBM.
    Python и анализ данных
    Книгу можно рассматривать как современное практическое введение в разработку научных приложений на Python, ориентированных на обработку данных. Описаны те части языка Python и библиотеки для него, которые необходимы для эффективного решения широкого круга аналитических задач: интерактивная оболочка IPython, библиотеки NumPy и pandas, библиотека для визуализации данных matplotlib и др.
    Python для детей и родителей. Играй и программируй
    Научите своих детей программировать уже сейчас с помощью этой книги! В книге представлен язык Python, один из самых популярных и простых. Вы найдете здесь много упражнений – полезных, интересных и забавных, поэтому ваш ребенок не заскучает. Материал написан доступно и просто, поэтому ему не составит труда освоить азы программирования.

    Python — потрясающий язык. Синтаксис настолько прост, и длина кода настолько коротка, что делает его понятным и легким в написании.
    Если вы только начинаете программировать, Python— отличный выбор. Вы будете удивлены тому, сколько задач решает Python как только изучите его основы.
    Легко упустить из виду факт, что Python — мощный язык. Хорош для обучения программированию. Воплотите свою идею, создайте игру или начните с Data Science, Python поможет во всем, чтобы вы не затеяли.

    5 причин, почему быть программистом круто

    “Каждый в нашей стране должен научиться программировать, потому что это учит думать”
    Стив Джобс

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

    1. Щедрость рабочих мест

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

    2. Универсальность знаний

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

    3. Возможность работать удалённо

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

    4. Бонус к основной работе

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

    5. Гуманность + финансовый профит

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

    Стоит ли учить Python?

    Меня порой посещают различные идеи по саморазвитию. Это бывают совершенно разные мысли по поводу того, что мне стоило бы освоить, чему научиться, что понять. И вот в один из таких моментов, я задумался о изучении программирования. Я начинал с языка Pascal, актуального в то время, а сейчас, уже изучив порядка 3-х языков, задумался, а стоит ли изучать Python?

    Из этой статьи вы узнаете:

    Я, Гридин Семён, приветствую всех читателей моего блога kip-world. Вы давно думаете о том, чтобы начать изучать программирование? Может быть вы размышляете на тему того, как же язык программирования выбрать для начала?

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

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

    Я составил для вас небольшую «микростатью-рассуждение» для размышлений.

    Стоит ли учить Python?

    Думаю, ни для кого не секрет, что буквально еще 5-6 лет назад, первым языком для изучения программирования в любой школе был Pascal. Pascal замечательный язык своей эпохи, но, к сожалению или к счастью, он своё отжил и теперь Python как первый язык программирования это разумный выбор для каждого начинающего программиста!

    Вы возможно сейчас зададитесь вопросом: «А почему стоит изучать Python как первый язык программирования?» В этом нет никакой тайны, как и нет загадки.

    Преимущества языка программирования Python

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

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

    В-третьих, это относительно простой язык. Как такое может быть? А вот не поверите, бывает! По факту, для овладения этим языком достаточно уметь понимать текст на английском языке. Если вы это умеете, то большинство функций языка будут вам понятны. К тому же, если почитать отзывы программистов о языке Python, то можно заметить, что этот язык – любимчик почти каждого!

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

    Программисты просто обожают этот язык за краткость и простоту кода. Там где в языке JavaScript или C++ вам потребуется написать две-три страницы, в Pythone вы уложитесь всего в одну!

    А ещё очень важной особенностью языка Python является то, что он применяется для Web-разработок. Причем он используется не как обычный язык, а выполняет одну из интересных функций. Python для web-разработок применяется в тех случаях, когда другие языки не справляются! Это ведь очень интересный и любопытный факт. В данной сфере у языка своя собственная, личная ниша!

    Давайте подведем небольшой итог:

    • Python – это полноценный и многофункциональный язык программирования
    • Этот язык применяется в самых различных сферах, в том числе в web-программировании
    • Это идеальный язык для того, чтоб начать своё становление как программиста, потому что он понятен и прост в использовании
    • Является любимым языком множества профессиональных программистов

    И если у кого-то все ещё остались вопросы: «Стоит ли изучать Python?», «Подходит ли этот язык для начинающих?», «Смогу ли я, выучив этот язык устроиться на хорошую работу?» Мой ответ: «Определенно да! Учите данный язык, независимо от того, начинающий вы программист или уже бывалый. Он вам точно пригодится и поможет в вашей деятельности!»

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

    Python или нет?

    11 декабря, 2020 |

    Алина Драгун

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

    Алина Драгун
    Получайте новые статьи на e‑mail

    Пишем о будущем, технологиях и стартапах

    Ещё по теме

    Python’истом становись! Зарплата и профессиональные возможности программиста на .

    Топ-7 трендов разработки

    10 ценных Python-советов: для начинающих, но не только

    В этом году Python вошел в пятёрку самых популярных языков программирования в мире сразу в трёх уважаемых рейтингах. Журнал IEEE Spectrum поставил его на третье место после C и Java, но перед C++ и R. Аналитики RedMonk назвали Python четвёртым по востребованности, его пока опережают JavaScript, Java и PHP. Опубликованный в декабре рейтинг TIOBE Software тоже ставит Python на четвёртое место после Java, C и C++. Чем так крут Python, что его выбирает всё большее число разработчиков?

    А как вообще их выбирают?

    С чего начать, если вы выбираете язык программирования на старте, или чтобы расширить свои возможности?

    IT-специалисты рекомендуют оттолкнуться от ваших целей.

    Если вы хотите сразу же искать стартовую позицию программиста, то стоит посмотреть на рынок. Пока компании чаще ищут разработчиков на PHP и JavaScript. Но структура спроса на программистов быстро меняется. Сейчас на hh.ru 850 предложений для PHP-программистов и 570 вакансий ― для разработчиков на Python. А ведь ещё в прошлом году соотношение было 4 к 1.

    Есть мнение, что первый осваиваемый язык программирования должен быть функциональным. И тогда выбор будет между Scala, F#, Clojure, Haskell. С другой стороны, если для написания строчки кода придётся читать книги и перерывать форумы, то желание осваивать такой язык может и пропасть. Чтобы избежать этого, возможно, стоит начать с императивного языка, например ― Ruby. Или с ещё более универсального Python.

    О чём говорят гиганты

    Можно опираться на выбор ряда крупных корпораций. На Python написаны Instagram, Youtube, Pinterest и другие популярные ресурсы.

    Автор Python Гвидо Ван Россум участвовал в создании сервиса хостинга сайтов и веб-приложений Google App Engine, и с тех пор одной из любимых присказок пайтонистов стала фраза разработчиков Google о применении языков: «Python ― где можем, C++ ― где должны» (“Python where we can, C++ where we must”).

    Используют Python наряду с другими ассемблерами и Spotify, и Netflix, и Dropbox, где с 2013 года работает Ван Россум.

    Чем Python крут для новичков

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

    Из-за простого синтаксиса и прозрачной структуры язык легко читать. Вам даже не нужно использовать фигурные скобки в каждой строчке кода. Если вы знаете Python, то сможете работать с любой версией этого языка, приложив к её освоению минимальные усилия. Даже модули Python воспринимаются легко, в отличие, например, от фреймворков Java.

    Ещё одно преимущество Python — скорость разработки. Масштабирование возможностей кроется в стандартной библиотеке этого языка. Комбинируя фреймворки, можно находить для себя всё новые и новые инструменты.

    А есть ли недостатки?

    Главный недостаток, как говорят сами разработчики на Python, — в том, что программы, написанные на нём, работают медленнее, чем созданные на компиллируемых языках (C, C++). Тесты производительности систем, полностью написанных на Python уступают и Java VM. Но важно помнить, что скорость разработки порой важнее, чем быстродействие продукта. А писать на Python выходит быстрее, чем на многих других языках.

    РЕКОМЕНДАЦИЯ ПРОФИ

    Технический руководитель группы разработчиков медицинского портала emias.info Сергей Никитин:

    Реализация CPython не может похвастаться вычислительной производительностью. Но медленный код можно переписать на C или C++ и связать его с Python. А чтобы поднять производительность в целом, используют реализацию с JIT-компиляцией — PyPy («ПайПай»).

    Для каких задач подходит Python

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

    • анализ данных;
    • разработка интернет-сайтов;
    • создание десктопных и веб-приложений;
    • управление системами и базами данных;
    • автоматизация процессов;
    • создание прототипов;
    • тестирование программ;
    • проведение расчётов (с использованием расширений, например, NumPy);
    • машинное обучение.

    Это далеко не все возможности языка. NASA применяет Python для шифрования данных. У компаний JPL и Fermilab есть написанные на Python сервисы для вычислений. UBS, Citadel, JPMorgan Chase используют этот ассемблер для создания рыночных прогнозов.

    РЕЗЮМЕ ОТ ПРАКТИКА

    Сергей Никитин:

    Я постоянно отсматриваю чужой код. И для меня главное преимущество Python перед всеми известными мне языками (C, C++, PHP, Java Script и другими) — это читаемость, преемственность и неизменность кода. На Python сложно написать одну и ту же программу по-разному — синтаксис языка жестко регламентирует конечный код. Python прост, языковых конструкций в нём на порядок меньше, чем в других языках, и изучать его легко.

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

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

    Этот язык делает разработчика профессионально мобильным. ― Тот, кто изучил Python досконально, сможет погрузиться в любой другой язык за несколько часов или пару дней. Стандартная библиотека и тысячи модулей дают возможность разрабатывать на Python не только приложения и утилиты, но также драйверы для железа, мобильные приложения и игры. Например, на Python была написана всем известная «Цивилизация» (Civ4).

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

    Цукерберг рекомендует:  Малоизвестные языки для создания искусственного интеллекта
    Понравилась статья? Поделиться с друзьями:
    Все языки программирования для начинающих