Хотя пользователи обычно думают о Python как о процедурном и объектно-ориентированном языке, он содержит все необходимое для поддержки полностью функционального подхода к программированию.
В этой статье рассматриваются общие концепции функционального программирования и иллюстрируются способы реализации функционального подхода на Python.
Что такое Python?
Python — свободно распространяемый, очень высокоуровневый интерпретируемый язык, разработанный Гвидо ван Россумом (Guido van Rossum). Он сочетает прозрачный синтаксис с мощной (но необязательной) объектно-ориентированной семантикой. Python доступен почти на всех существующих ныне платформах и обладает очень высокой переносимостью между платформами.
Что такое функциональное программирование?
Лучше всего начать с труднейшего вопроса — а что, собственно, такое «функциональное программирование (FP)»? Один из возможных ответов — «это когда вы пишете на языке наподобие Lisp, Scheme, Haskell, ML, OCAML, Clean, Mercury или Erlang (или еще на некоторых других)». Этот ответ, безусловно, верен, но не сильно проясняет суть.
С нуля до 100 000 за полгода | Что должен знать JUNIOR PYTHON разработчик в 2023
К сожалению, получить четкое мнение о том, что же такое FP, оказывается очень трудно даже среди собственно функциональных программистов. Вспоминается притча о трех слепцах и слоне. Возможно также определить FP, противопоставив его «императивному программированию» (тому, что вы делаете на языках наподобие C, Pascal, C++, Java, Perl, Awk, TCL и на многих других — по крайнее мере, большей частью).
Хотя автор всеми силами приветствует советы со стороны тех, кто лучше него знает предмет, он мог бы приблизительно охарактеризовать функциональное программирование как обладающее как минимум несколькими из следующих свойств. В языках, называемых функциональными, хорошо поддерживаются нижеперечисленные подходы, а все прочие подходы поддерживаются плохо или не поддерживаются вовсе:
* Функции — объекты первого класса. Т.е., все, что можно делать с «данными», можно делать и с функциями (вроде передачи функции другой функции в качестве параметра).
* Использование рекурсии в качестве основной структуры контроля потока управления. В некоторых языках не существует иной конструкции цикла, кроме рекурсии.
* Акцент на обработке списков (lists, отсюда название Lisp — LISt Processing). Списки с рекурсивным обходом подсписков часто используются в качестве замены циклов.
* «Чистые» функциональные языки избегают побочных эффектов. Это исключает почти повсеместно распространенный в императивных языках подход, при котором одной и той же переменной последовательно присваиваются различные значения для отслеживания состояния программы.
* FP не одобряет или совершенно запрещает утверждения (statements), используя вместо этого вычисление выражений (т.е. функций с аргументами). В предельном случае, одна программа есть одно выражение (плюс дополнительные определения).
* FP акцентируется на том, что должно быть вычислено, а не как.
Что пишут на Python? ПЛЮСЫ и МИНУСЫ Python
* Большая часть FP использует функции «высокого порядка» (функции, оперирующие функциями, оперирующими функциями).
Защитники функционального программирования доказывают, что все эти характеристики приводят к более быстрой разработке более короткого и безошибочного кода. Более того, высокие теоретики от компьютерной науки, логики и математики находят, что процесс доказательства формальных свойств для функциональных языков и программ много проще, чем для императивных.
Функциональные возможности, присущие Python
Python поддерживает большую часть характеристик функционального программирования, начиная с версии Python 1.0. Но, как большинство возможностей Python, они присутствуют в очень смешанном языке. Так же как и с объектно-ориентированными возможностями Python, вы можете использовать то, что вам нужно, и игнорировать все остальное (пока оно вам не понадобится). В Python 2.0 было добавлено очень удачное «синтаксическое украшение» — списочные встраивания (list comprehensions). Хотя и не добавляя принципиально новых возможностей, списочные встраивания делают использование многих старых возможностей значительно приятнее.
Базовые элементы FP в Python — функции map(), reduce(), filter() и оператор lambda. В Python 1.x введена также функция apply(), удобная для прямого применения функции к списку, возвращаемому другой. Python 2.0 предоставляет для этого улучшенный синтаксис. Несколько неожиданно, но этих функций и всего нескольких базовых операторов почти достаточно для написания любой программы на Python; в частности, все управляющие утверждения (‘if’, ‘elif’, ‘else’, ‘assert’, ‘try’, ‘except’, ‘finally’, ‘for’, ‘break’, ‘continue’, ‘while’, ‘def’) можно представить в функциональном стиле, используя исключительно функции и операторы. Несмотря на то, что задача реального удаления всех команд управления потоком, возможно, полезна только для представления на конкурс «невразумительный Python» (с кодом, выглядящим как программа на Lisp’е), стоит уяснить, как FP выражает управляющие структуры через вызовы функций и рекурсию.
Исключение команд управления потоком
Первое, о чем стоит вспомнить в нашем упражнении — то, что Python «замыкает накоротко» вычисление логических выражений.1 Оказывается, это предоставляет эквивалент блока ‘if’/’elif’/’else’ в виде выражения. Итак:
#—— «Короткозамкнутые» условные вызовы в Python ——# # Обычные управляющие конструкции if : func1() elif : func2() else: func3() # Эквивалентное «накоротко замкнутое» выражение ( and func1()) or ( and func2()) or (func3()) # Пример «накоротко замкнутого» выражения >>> x = 3 >>> def pr(s): return s >>> (x==1 and pr(‘one’)) or (x==2 and pr(‘two’)) or (pr(‘other’)) ‘other’ >>> x = 2 >>> (x==1 and pr(‘one’)) or (x==2 and pr(‘two’)) or (pr(‘other’)) ‘two’
Казалось бы, наша версия условных вызовов с помощью выражений — не более, чем салонный фокус; однако все становится гораздо интересней, если учесть, что оператор lambda может содержать только выражения! Раз, как мы только что показали, выражения могут содержать условные блоки, используя короткое замыкание, выражение lambda позволяет в общей форме представить условные возвращаемые значения. Базируясь на предыдущем примере:
#——— Lambda с короткозамкнутыми условными выражениями в Python ——-# >>> pr = lambda s:s >>> namenum = lambda x: (x==1 and pr(«one»)) . or (x==2 and pr(«two»)) . or (pr(«other»)) >>> namenum(1) ‘one’ >>> namenum(2) ‘two’ >>> namenum(3) ‘other’
Функции как объекты первого класса
Приведенные примеры уже засвидетельствовали, хотя и неочевидным образом, статус функций как объектов первого класса в Python.
Дело в том, что, создав объект функции оператором lambda, мы произвели чрезвычайно общее действие. Мы имели возможность привязать наш объект к именам pr и namenum в точности тем же способом, как могли бы привязать к этим именам число 23 или строку «spam». Но точно так же, как число 23 можно использовать, не привязывая ни к какому имени (например, как аргумент функции), мы можем использовать объект функции, созданный lambda, не привязывая ни к какому имени. Функция в Python — всего лишь еще одно значение, с которым можно что-то сделать.
Главное, что мы делаем с нашими объектами первого класса — передаем их во встроенные функции map(), reduce() и filter(). Каждая из этих функций принимает объект функции в качестве первого аргумента. map() применяет переданную функцию к каждому элементу в переданном списке (списках) и возвращает список результатов. reduce() применяет переданную функцию к каждому значению в списке и ко внутреннему накопителю результата; например, reduce(lambda n,m:n*m, range(1,10)) означает 10! (факториал 10 — умножить каждый элемент на результат предыдущего умножения). filter() применяет переданную функцию к каждому элементу списка и возвращает список тех элементов исходного списка, для которых переданная функция вернула значение истинности. Мы также часто передаем функциональные объекты нашим собственным функциям, но чаще некоторым комбинациям вышеупомянутых встроенных функций.
Комбинируя три этих встроенных FP-функции, можно реализовать неожиданно широкий диапазон операций потока управления, не прибегая к утверждениям (statements), а используя лишь выражения.
Функциональные циклы в Python
Замена циклов на выражения так же проста, как и замена условных блоков. ‘for’ может быть впрямую переведено в map(). Так же, как и с условным выполнением, нам понадобится упростить блок утверждений до одного вызова функции (мы близки к тому, чтобы научиться делать это в общем случае):
#———- Функциональный цикл ‘for’ в Python ———-# for e in lst: func(e) # цикл на утверждении ‘for’ map(func,lst) # цикл, основанный на map()
Кстати, похожая техника применяется для реализации последовательного выполнения программы, используя функциональный подход. Т.е., императивное программирование по большей части состоит из утверждений, требующих «сделать это, затем сделать то, затем сделать что-то еще». ‘map()’ позволяет это выразить так:
#—— Функциональное последовательное выполнение в Python ———-# # создадим вспомогательную функцию вызова функции do_it = lambda f: f() # Пусть f1, f2, f3 (etc) — функции, выполняющие полезные действия map(do_it, [f1,f2,f3]) # последовательное выполнение, реализованное на map()
В общем случае, вся главная программа может быть вызовом ‘map()’ со списком функций, которые надо последовательно вызвать, чтобы выполнить программу. Еще одно удобное свойство функций как объектов — то, что вы можете поместить их в список.
Перевести ‘while’ впрямую немного сложнее, но вполне получается :
#——— Функциональный цикл ‘while’ в Python ———-# # Обычный (основаный на утверждении ‘while’) цикл while : if : break else: # Рекурсивный цикл в функциональном стиле def while_block(): if : return 1 else: return 0 while_FP = lambda: ( and while_block()) or while_FP() while_FP()
Наш вариант ‘while’ все еще требует функцию while_block(), которая сама по себе может содержать не только выражения, но и утверждения (statements). Но мы могли бы продолжить дальнейшее исключение утверждений в этой функции (как, например, замену блока ‘if/else’ в вышеописанном шаблоне на короткозамкнутое выражение). К тому же, обычная проверка на месте (наподобие ‘while myvar==7’) вряд ли окажется полезной, поскольку тело цикла (в представленном виде) не может изменить какие-либо переменные (хотя глобальные переменные могут быть изменены в while_block()). Один из способов применить более полезное условие — заставить while_block() возвращать более осмысленное значение и сравнивать его с условием завершения. Стоит взглянуть на реальный пример исключения утверждений:
#———- Функциональный цикл ‘echo’ в Python ————# # Императивная версия «echo()» def echo_IMP(): while 1: x = raw_input(«IMP — «) if x == ‘quit’: break else print x echo_IMP() # Служебная функция, реализующая «тождество с побочным эффектом» def monadic_print(x): print x return x # FP версия «echo()» echo_FP = lambda: monadic_print(raw_input(«FP — «))==’quit’ or echo_FP() echo_FP()
Ключевые слова и идентификаторы в Python
Ключевые слова в Python – это зарезервированные слова. Это означает, что вы не можете использовать их в качестве имени каких-либо объектов, таких как переменные, классы и функции. Они предназначены для определения синтаксиса и структуры языка Python.
В языке программирования Python есть 33 ключевых слова. Хотя со временем количество может меняться. Также ключевые слова чувствительны к регистру, поэтому они должны быть написаны как есть. Вот список всех ключевых слов в программировании на Python.
Список всех ключевых слов в Python
and | Логический оператор |
as | Псевдоним |
assert | Для отладки |
break | Избавление от циклов |
class | Используется для определения классов |
continue | Ключевое слово, используемое для продолжения цикла, пропуская существующий |
def | Ключевое слово, используемое для определения функции |
del | Используется для удаления объектов |
elif | Часть условного оператора if-elif-else |
else | То же, что и выше |
except | Ключевое слово, используемое для перехвата исключений |
FALSE | Логическое значение |
finally | Это ключевое слово используется для запуска фрагмента кода при отсутствии исключений. |
for | Определение цикла |
from | Используется, когда вам нужно импортировать только определенный раздел модуля |
global | Укажите область действия переменной как глобальную |
if | Используется для определения условия «если» |
import | Ключевое слово Python, используемое для импорта модулей |
in | Проверяет, присутствуют ли указанные значения в повторяемом объекте |
is | Это ключевое слово используется для проверки равенства. |
lambda | Создавать анонимные функции |
None | Ключевое слово None представляет нулевое значение в PYthon. |
nonlocal | Объявить переменную с нелокальной областью видимости |
not | Логический оператор для отрицания условия |
or | Логический оператор, используемый, когда должно выполняться одно из условий. |
pass | Это ключевое слово Python проходит и позволяет функции продолжить |
raise | Вызывает исключение при вызове с указанным значением |
return | Выходит из запущенной функции и возвращает указанное значение |
TRUE | Логическое значение |
try | Часть попытки… за исключением утверждения |
while | Используется для определения цикла |
with | Создает блок, упрощающий обработку исключений и файловые операции |
yield | Завершает функцию и возвращает объект-генератор |
Ниже приведен простой пример, показывающий использование if-else в программе Python.
var = 1; if(var==1): print(«odd») else: print(«even»)
Когда мы запускаем указанную выше программу, Python понимает блок if-else из-за фиксированных ключевых слов и синтаксиса, а затем выполняет дальнейшую обработку.
Что такое идентификаторы в Python?
Идентификатор в Python – это имя, которое мы даем для идентификации переменной, функции, класса, модуля или другого объекта. Это означает, что всякий раз, когда мы хотим дать объекту имя, оно называется идентификатором.
Иногда переменную и идентификатор часто неправильно понимают, как одно и то же, но это не так. Для наглядности, давайте разберемся, что такое переменная.
Что такое переменная в Python?
Переменная в Python – это место в памяти, где может храниться значение. Позже мы сможем получить значение для использования. Но для этого нам нужно дать этому участку памяти псевдоним, чтобы мы могли ссылаться на него. Это называют идентификатором.
Правила написания идентификаторов
Есть некоторые правила написания идентификаторов. Но сначала вы должны знать, что Python чувствителен к регистру. Это означает, что имя и имя – это два разных идентификатора в Python. Вот несколько правил написания идентификаторов в Python:
Хотя это жесткие правила для написания идентификаторов, также существуют некоторые соглашения об именах, которые не являются обязательными, а скорее являются хорошими примерами, которых следует придерживаться:
- Имена классов начинаются с заглавной буквы. Все остальные идентификаторы начинаются со строчной буквы.
- Если идентификатор начинается с одного символа подчеркивания в начале, это означает, что идентификатор является частным.
- Если идентификатор начинается и заканчивается двумя символами подчеркивания, это означает, что идентификатор является определяемым языком специальным именем.
- Хотя c = 10 действительно, запись count = 10 имела бы больше смысла, и было бы легче понять, что он делает, даже если вы посмотрите на свой код спустя долгое время.
- Несколько слов можно разделить знаком подчеркивания, например this_is_a_variable.
Вот пример программы для переменных в Python:
myVariable=»hello world» print(myVariable) var1=1 print(var1) var2=2 print(var2)
Если вы запустите программу, результат будет таким, как на изображении ниже.
Источник: pythonim.ru
Python – особенности языка и вся информация для начинающих
Python несколько лет входит в ТОП популярных языков мира благодаря своей простоте и универсальности. Важная его особенность – низкий порог входа, благодаря чему язык могут быстро выучить люди, которые ничего не знают о программировании. Мы расскажем о базовых принципах Python, стандартных библиотеках, с которыми он работает, его отличии от the java и JS, производительности, плюсах и минусах. В конце статьи вас ждёт небольшой python FAQ, где вы узнаете о полезных материалах для самообучения и тонкостях языка.
История Python
В каких задачах удобен язык
Легко ли учить язык
Типизация Python
Производительность языка
Примеры кода на Python
Плюсы и минусы Python
Альтернативы
Перспективы языка и сколько получают разработчики
Что почитать по теме
Подведём итоги
О языке
Язык Python – универсальный язык, который является одним из наиболее популярных в последние годы. Он отличается структурированным программным кодом, простым синтаксисом, поэтому ему так любят новички в программировании. На нём ведут разработку сайтов и приложений.
Разработчики создали для него много библиотек – фреймворков, с помощью которых можно разнообразить код под разные сайты или приложения. Язык программирования python 3 развивается, постоянно появляются обновления.
Язык отличают от остальных интерпретаторов python, благодаря которым работают стандарты кодировки ISO, ANSI и т.п.
История Python
Язык программирования был разработан в 80-е годы программистом Гвидо ван Россумом в Нидерландах. Сначала разработчик планировал сделать Python объектно-ориентированным языком, то есть для написания скриптов. В 1991 году ван Россум представил исходный код всему миру.
Язык программирования получил популярность благодаря удачному месту презентации, простому коду и широким возможностям. Вскоре разработчик создал портал PEP, в котором программисты постоянно обсуждают развитие и улучшение языка.
В 2008 году Гвидо выпустил обновление python 3.0. Она отличается от предыдущей версии python 2.7 меньшим количеством ошибок в архитектуре ядра. Также обновлённая версия отлично совместима с предыдущими.
В каких задачах удобен язык
Python 3000 используются в веб-разработке, автоматизации процессов и data science. Для веб-разработки python software выпускает различные фреймворки, которые помогают упростить написание кода серверной части. Эти библиотеки используются для быстрого создания базовой логики бэкенда и включают в себя также работу с базами данных.
В последнее время направление Data Science развивается стремительными темпами. В него входит машинное обучение, анализ данных и визуализация. Это всё используется для рекомендательных сервисов, систем распознавания лиц, бизнеса, которому нужно проанализировать свою аудиторию и наглядно показать результат.
Ещё одно применение языка – автоматизация процессов. На нём пишут скрипты, которые помогают разработчикам упростить работу, заменяя ручной труд автоматическим.
Легко ли учить язык
Язык быстро и легко учится людьми без опыта программирования благодаря своей логичности, простоте. У Питона простой синтаксис и правила. Из-за того, что этот язык высокоуровневый, разработчикам не нужно думать, как кодировать. Они думают над тем, что кодировать. Также Питон очень похож на английский язык, поэтому прочитать и запомнить его синтаксис просто.
Типизация Python
В Питоне все данные являются объектами. Их могут создавать разработчики сами, либо они уже изначально встроены в сам язык. Объект содержит значения и операции для них. Программа на этом языке программирования выглядит следующим образом:
- во всех версиях питона программа состоит из модулей;
- модуль – набор инструкций;
- инструкции состоят из выражений;
- с помощью выражений создают и обрабатывают объекты.
Объекты бывают разных типов. И язык Python поддерживает динамическую типизацию.
То есть он определяет тип данных непосредственно во время выполнения кода. У каждого типа свои особенности и ограничения, поэтому важно классифицировать его, чтобы программа работала корректно. Классический пример написания кода с динамической типизацией:
a = 1 print(type(a)) a = ‘one’ print(type(a)) a = print(type(a))
Динамическая типизация упрощает изучение языка, позволяет абстрагироваться от алгоритмов и создавать коллекции из элементов разных типов.
Типы данных можно поделить на ссылочные (списки, классы, словари, кортежи, функции), атомарные (строки и числа), последовательности, файлы.
Синтаксис
В Питоне for windows нет операторных скобок, которые используются в большинстве других языков. Блоки здесь выделяют отступами. Однострочные комментарии обозначаются #, а многострочные «»». Значение переменной присваивается знаком равенства =. Знак сравнения — ==, увеличения значения — +=, уменьшение переменной — -+.
Производительность языка
Среди популярных высокоуровневых языков программирования Python один из медленных. Маленькая производительность обусловлена глобальной блокировкой интерпретатора, динамической типизацией.
Чтобы провести python enhancement и повысить производительность языка, рекомендуем подобрать подходящую структуру данных, оптимизировать цикл и строки, максимально использовать вычисление if и понимание списка.
Примеры кода на Python
Предлагаем ознакомиться с несколькими примерами кода на этом языке программирования.
Вычисление времени выполнения функции или программы:
import time start_time= time.time() def fun(): a=2 b=3 c=a+b end_time= time.time() fun() timetaken = end_time — start_time print(«Your program takes: «, timetaken) # 0.0345
Проверить повторяющиеся значения в списке можно следующим образом:
def check_duplicate(lst): return len(lst) != len(set(lst)) check_duplicate([1,2,3,4,5,4,6]) # True check_duplicate([1,2,3]) # False check_duplicate([1,2,3,4,9]) # False
Пример с сортировкой списка, которую часто используют разработчики in python:
my_list = [«leaf», «cherry», «fish»] my_list1 = [«D»,»C»,»B»,»A»] my_list2 = [1,2,3,4,5] my_list.sort() # [‘cherry’, ‘fish’, ‘leaf’] my_list1.sort() # [‘A’, ‘B’, ‘C’, ‘D’] print(sorted(my_list2, reverse=True)) # [5, 4, 3, 2, 1]
Следующий код покажет, сколько памяти занимает выбранная переменная:
import sys var1=»Python» var2=100 var3=True print(sys.getsizeof(var1)) #55 print(sys.getsizeof(var2)) #28 print(sys.getsizeof(var3)) #28
Плюсы и минусы Python
Среди плюсов языка:
- подойдёт в качестве первого языка программирования;
- python поддерживают почти все операционные системы и платформы;
- много фреймворков;
- простой синтаксис;
- поддерживает ООП.
- низкая производительность;
- не очень подходит для мобильной разработки;
- из-за динамической типизации можно наделать много ошибок.
Альтернативы
У Питона есть два основных конкурента – Java и JavaScript. Каждый из них имеет свои особенности, преимущества и недостатки. И также входят в список самых популярных языков.
Сравнение с Java
Языки поддерживают ООП и кроссплатформенность. Но отличаются:
- Типизацией. У Джавы она статическая, и типы переменных считывают во время компиляции.
- Скоростью, которая у Java в 10 раз выше.
- Синтаксисом и читаемостью. У Java он строгий и сложный, в нём много элементов.
- Применением. Java используется для промышленных программ и приложений на мобильные платформы. Python – машинное обучение, автоматизация и веб-разработка.
Сравнение с JavaScript
От JavaScript Питон отличается:
- Типами исходных кодов. В Питоне объекты строго разделены по типам, а в JavaScript больше свободы, из-за чего часто возникают ошибки.
- Скоростью. У JavaScript она гораздо выше.
- Применением. JavaScript зачастую используется только в веб-разработке, когда как Python software foundation вышел далеко за эти границы.
- Универсальностью. Питон больше подходит только для бэкенд-разработки, а JS идеален для Frontend и Backend.
Перспективы языка и сколько получают разработчики
Разработчики Python уровня Junior получают в районе 50 000 – 80 000 руб. Зарплата Middle – 100 000 – 150 000 руб. Senior будут получать свыше 200 000 руб. Уровень зарплат зависит от региона, обязанностей разработчика.
Согласно индексу TIOBE, который определяет популярность языков программирования согласно поисковым запросам, Python несколько лет входит в тройку популярных. Благодаря широкому развитию Data Science, Питон будет ещё несколько лет среди самых востребованных языков мира.
В России разработчиков не так много, поэтому на рынке всегда более 1 500 вакансий, которые ориентированы на специалистов с разным уровнем подготовки и знаний.
Что почитать по теме
Чтобы постоянно быть в курсе enhancement proposals, мы предлагаем список полезных ресурсов с каналами, форумами, видеолекциями и т.п.
Список сайтов для изучения Питон:
- Code Academy – бесплатный портал с уроками по Python;
- Python Class от Google – электронный учебник для опытных разработчиков;
- Python.org с Python 3 documentation – официальные документы по языку;
- PythonChallenge – портал с уроками и задачами.
В этих блогах вы найдёте полезную и актуальную информацию:
- Planet Python – один из самых популярных сайтов, где разработчики делятся своими мыслями, проблемами, пишут статьи и просто общаются.
- Mouse vs. Python – портал с постоянно обновляющейся информацией и новостями.
- Doug Hellmann – блог одного из ведущих мировых разработчиков.
- PyBloggers – социальная сеть разработчиков Питон.
- Pythonist.ru выкладывает ссылки на обучающие статьи, обзоры книг, предлагает задачи по написанию кода.
- PythonistPro – англоязычный канал с ссылками на полезные статьи, книги и обзоры.
- Python Academy в своих постах публикует информацию о модулях, функциях или приёмах.
- Python Resources с обучающими ресурсами на английском языке.
Для изучения Python можно смотреть видео с каналов на YouTube:
- Хауди Хо™ – Просто о мире IT! – много уроков по Питону.
- Django School – всё об этом фреймворке.
- Egoroff channel – опыт разработчика Python.
- Канал разработчика Олега Молчанова о Питоне.
FAQ
Где можно выучить Python?
Вы можете самостоятельно изучать его по литературе и специальным тематическим сайтам. Также в интернете есть много бесплатных и платных онлайн-курсов, где за период 6 – 12 месяцев вы сможете получить базовые знания для того, чтобы устроиться на первую работу.
Какие soft skills пригодятся в работе?
Разработчик должен уметь общаться с людьми, работать в команде, управлять своим временем, стремиться к профессиональному росту, быть ответственным и усидчивым.
Подведём итоги
Если вас заинтересовала перспектива изучения Python, то вы должны знать, что:
- язык универсальный и используется для машинного обучения, анализа, визуализации, создания сайтов и приложений;
- он появился в 80-е годы;
- Python 3.0 – актуальная версия языка;
- язык легко выучить благодаря простому синтаксису и динамичной типизации данных;
- Python имеет слабую производительность и редко используется для создания мобильных приложений;
- основные конкуренты – JS, Java, C;
- разработчики без опыта могут получать от 50 000 руб., поскольку специальность востребована, и на российском рынке не хватает программистов.
Источник: www.sravni.ru