Где перспективно и адекватно использовать Python
В прошлой статье мы уже обсудили с вами причины, по которой Python нельзя назвать идеальным языком для новичков, хотя на том же Хабре бытует мнение, что Python – это выбор номер один и вообще топчик.
В этой статье мы с вами обсудим тот перечень направлений Питона, который я выделяю наиболее перспективными для приложения своих сил и времени для молодых специалистов. Данный вывод делается на основе моего анализа – изучение областей и инструментов питона и сравнивать их эффективность с аналогами на других платформах.
Что ты можешь сделать на Питоне
Хотя питон является языком общего назначения, и как говорится, все двери перед тобой открыты, на самом деле использование языка сильно ограничивается теми инструментами и технологиями, которые были в нем разработаны в ходе эволюционной борьбы с другими технологиями. Поэтому приступаем к обзору.
Микроконтроллеры (весьма сомнительно)
Хотя Андрей Власовских на прошедшем PYCON Russia 2017 в своей фирменной манере с энтузиазмом рассказывал о том, как программировать микроконтроллеры на таком инструменте, как MicroPython, а Кирилл Борисов даже предлагал изучить некоторую зарубежную литературу, ситуация в общем никакая.
Список микроконтроллеров, которые поддерживаются Python, стремится к нулю, коммерческая эффективность и наличие предложений по работе практическая нулевая. С учетом того, что есть более традиционные способы инструменты программирования, пока какая-то большая компания не вложится в этом направление, тут делать нечего.
Девопс (адекватно)
Анализ рынка показывает, что примерно треть всех вакансий, где упоминается Python, относятся к сфере DevOpsa. Однако Python идет не основным инструментом, а той технологией, которую знать желательно. Это связано с тем, что Python практичности полностью сместил Perl для Linux, и неплохо так подвинул Bash в области написания крупных скриптов и более крупных серверных компонентов. Также к этому добавляется то, что интерфейс многих тулзов принимает Python в качестве языка сценариев.
Если вы хотите развиваться в сфере Девопса, то знание Питон вам будет большим плюсом, все остальные проходят эту сферу стороной.
Что касается коммерческой перспективы (стартапа) данного направления, то сложно представить человека, который бы смог написать и монетизировать какой-то инструмент, не имея опыта 5+ лет в области девопса.
Тестирование (адекватно)
Хотя главным инструментом автоматизации тестирования является кровавая Java, которая имеет огромный набор фреймворков и готовых решений, порой небольшие компании используют Python для полноценного тестирования, либо написания сценариев для тулзов, типа Яндекс.Танк с его BFG.
Практика показывает, что хотя Python может полноценно справиться с задачей тестирования, использование Java является более прямолинейным и надежным решением.
Но если говорить в общем, то адекватный специалист по тестированию должен одинаково хорошо использовать Python и Java для своей области.
Вакансий под тестирование примерно также треть от общей массы, часто в вакансиях указывают знание и Python и Java одновременно.
Desktop development (сомнительно)
В настоящий момент язык Python имеет 5 кросc-платформенных инструментов, которые позволяют писать «полноценные» приложения под Windows/Linux/Mac
- Tkinter
- PyQt
- PyGTK
- WxPython
- Kivy (Условно)
Поэтому можно с уверенностью сказать, что писать коммерческий Desktop на питон – это весьма сомнительная затея, и компании этим редко занимаются (либо переписывают при первой же возможности, как это сделал DropBox).
Что касается внутренних инструментов, то использование небольших GUI-приложений применяется, но искать целенаправленно Desktop Python разработчиков не будут.
Кто же хочется заняться этой сферой более полно, прошу к Игорю Новикову, который нашел неплохой способ сшить Франкенштейна с помощью абстракционного слоя – ссылка
Mobile Development (весьма сомнительно)
Все плохо, в качестве pet проектов можно использовать Kivy, для реальной разработки весьма сомнительно, вакансий на Kivy нет.
Т.е. как, я лично разговаривал с рядом людей, которые имели свой веб-проект на Python и для захвата большой аудитории писали приложения на Kivy, и у них его даже использовали, но это имеет вид «Программист пишет то, на чем хочет».
Машинное обучение и Data science (адекватно и перспективно)
Это одна из самых хайповы областей современного IT-мира, где используется Python в качестве инструмента апробации. Python имеет ряд удобных библиотек машинного обучения и научных расчетов: Pandas, NumPy, SciPy, Scikit-Learn, которые позволяют достаточно быстро построить рабочие модели. И они на самом деле неплохо работают.
Что касается использования, то Python используется в качестве инструмента апробации, либо на небольших задачах. Если проект большой, то обычно модель пишут на Java/Scala/C++, а специалист по обучению уже выступает в качестве консультанта/аналитика.
Сложность этого направления заключается в том, что у вас должны быть высокие знания в области математики и статистики, практически всегда будет спрашиваться высшее технические, математическое образование.
По вакансиям все довольно неплохо, но в таких вакансиях требуется не знание Python, а ваша голова.
Тем, кто хочет быстренько пощупать данное направление, советую прочитать книгу: «Vvedenie_v_mashinnoe_obuchenie_s_pomoschyu_Python_-_A_Myuller_S_Gvido_2017» — есть на торрентах, читается быстро, представление дает хорошее.
Веб-скрапинг (возможно, но сомнительно)
Питон имеет три вещи, которые делают его весьма эффективными в области веб-скраппинга, бибиотеку Requests, beautifulsoup и АПИ для Selenium. Если сюда подключить библиотеки для компьютерного зрения и Машинное обучение, то получаются весьма эффективные инструменты.
Проблема заключается в том, что вакансий в этой сфере мало, основные клиенты сидят на фрилансе, которые предлагают за фикс написать им скрипты парсинга для их говно-сайтов, спам-машин, и изредка генераторов отзывов.
Область интересная, но денег в ней мало.
Компьютерное зрение (сомнительно)
В питоне есть ряд инструментов, которые позволяют писать инструменты компьютерного зрения, они даже используются местами в коммерческих продуктах, либо в качестве компонентов, например, для веб-скраппинга. Однако Питон явно нельзя назвать подходящим инструментов, поэтому использование крайне ограничено, вакансий практически нет.
GameDev (сомнительно)
Практически в каждом обсуждении разработки игры на Python приводят в качестве примера eve online и WarGaming. Однако в первом случае используется stateless python, а во втором случае все ограничивается языком написания сценариев.
Что же касается реального использования, то у вас появляется три движка Kivy, PyGame, Panda3D, если первые два больше подходят для пет-проектов, то третий реально использовался на боевых проектах неплохого качества, правда эти проекты были 2004 года. Что как бы намекает, что использование проверенных движков на других языках типа Unity или Game Maker выглядит более убедительно.
Однако незаметно сюда крадется движок Ren’Py, который внезапно стал лучшим движков для написания визуальных романов (страдальческих историй для девочек), которые неплохо окупаются даже в рамках РФ. Серия «7 демонологов Петра Великого», тому доказательство.
Вакансий в GameDev для питона естественно нет, но деньги на «стартапе» поднять можно при должной сноровке. Но надежней взять другой язык и проверенные движки.
Веб-разработка (адекватно и перспективно)
- Django (монолитный синхронный фреймворк)
- Flask (микро синхронный фреймворк)
- Tornado (монолитный асинхронный фреймворк)
- Twisted (монолитный асинхронный фреймворк)
- Aiohttp (микро асинхронных фреймворк)
Сила Python заключается в том, что он позволяет быстро разрабатывать комплексные веб-приложения, имеет огромное число качественных модулей, прекрасно подходит для сервисов статистики и аналитики (где, в общем, и идет для него большая часть вакансий). Данное направление занимает оставшуюся треть всех вакансий.
Отдельно хочется отметить написание ГИС сервисов на Python, которые хотя и имеют вполне адекватный инструментарий для работы с геоданными, но все же использование Java для этих целей выглядит перспективней.
Выводы об использовании питона
1) Что касается сферы девопса и тестирования, то Питон является ключевым инструментом профессии, который обязателен для каждого адекватного специалиста. Питон в данном случае не учат, к нему приходят по необходимости.
2) Наиболее перспективными выглядят сферы веб-разработки и машинного обучения (аналитики), которые явно выделяют питон на фоне его конкурентов в виде PHP и Ruby. И если вы хотите изучить питон, то вам желательно сосредоточится именно на этих сферах и не тратить свое время на что-то другое. Под это есть вакансии, на этом можно построить стартап.
3) Все остальные сферы, хотя и предлагают определенные инструменты для решения проблем, но перспективность использования этих инструментов выглядит весьма сомнительно. И главное, найти оплачиваемую работу на эти сферы практически невозможно.
5 классных вещей, которые вы можете освоить с Python
Python — универсальный язык программирования. По данным на январь 2023 года, он стал самым популярным согласно рейтингам TIOBE и PYPL.
Что можно написать на Python? Всё, что угодно. В этой статье мы расскажем о том, какие интересные программы можно создавать на Питоне, а также поделимся лайфхаками для работы с этим языком в Терминале.
Что пишут на Python
Python относительно легок в изучении благодаря простому синтаксису и большому числу инструментов и готовых решений: они не требуют дополнительных настроек и установки.
Интересные библиотеки — это “визитная карточка” языка Python. В нем есть функционал для любых задач: распознавание речи, обработка изображений, математические расчеты, поддержка популярных фреймворков — всё необходимое для того, чтобы можно было свободно программировать на Python.
Практическое применение фреймворков с поддержкой Python может быть следующим:
- NumPy — работа с многомерными массивами и математическими функциями.
- Django и Flask — разработка веб-приложений.
- SQLAlchemy — работа с базами данных по технологии ORM.
- Cocos2d — создание браузерных и мобильных игр.
- Tornado — разработка высокопроизводительных приложений, которые предназначены для работы с большим количеством пользователей.
- Bubot — для домашней автоматизации и программирования робототехники.
О том, для каких задач подходит Python, расскажем ниже.
Какие задачи можно решать, используя Python
Веб-разработка
Python поддерживает платформы для веб-разработки: например React, где используется связка Django (backend) + JavaScript (frontend). Этот же технологический стэк используется в DropBox.
Кроме этого, Python позволяет настроить доступ к файловой системе Linux со смартфона. Ниже покажем пример такой программы на Python. Выполните следующие действия:
- Откройте Терминал с помощью комбинации клавиш Ctrl + Alt + T.
- Запустите файловый сервер с помощью команды:
python3 -m http.server После этого файловая система станет доступна с любого устройства локальной сети. - Проверьте локальный IP:
ip addr | grep inet В третьей строке вывода вы увидите нужный IP-адрес. - Откройте браузер на смартфоне. В адресной строке введите следующее:
123.123.123.123:8000
Вместо 123.123.123.123 укажите локальный IP-адрес из предыдущего шага.
Автоматизация
Python позволяет упростить выполнение ряда задач. Например:
- установить напоминание,
- настроить Cron-задание,
- загрузить видео на видеохостинг и другие.
Чтобы автоматизировать эти действия, можно написать скрипт на Python. После этого ваше участие в качестве IT-специалиста не потребуется: после отработки кода все произойдет само собой.
Например, так можно конвертировать файл из формата CSV в JSON:
- Откройте Терминал с помощью комбинации клавиш Ctrl + Alt + T.
- Выполните команду:
python -c «import csv,json;print(json.dumps(list(csv.reader(open(“file.csv”)))))»
Вместо file.csv укажите имя вашего файла.
Создание игр
Python включает в себя библиотеки для разработки компьютерных и мобильных игр. Наиболее популярная из них — Kivy. Она позволяет создавать кроссплатформенные игры, которые поддерживаются популярными операционными системами: Windows, Linux, Mac, Android и iOS.
Кроме этого, вы можете запускать игры в Терминале Linux (например, Виселица). Для этого:
-
Сохраните этот код в файл с расширением .py:
from random import shuffle
# Кол-во попыток.
turns = 10
print(«Привет, Давай сыграем в виселицу! У тебя есть turns попыток!»)
# Список слов, которые участвуют в игре.
wordList = [«geekflare», «awesome», «python», «magic»]
# Перемешиваем список.
shuffle(wordList)
# Берем последнее слово из списка.
word = wordList.pop()
guesses = » »
# Цикл, который будет работать, пока не останется попыток или не отгаданных букв.
while turns > 0:
wrong = 0
for char in word:
if char in guesses:
print(char, end= » «)
else:
print(«_», end=» «)
wrong += 1
print(«\n»)
if wrong == 0:
print(«Ты выиграл! :)»)
break
print()
guess = «»
if len(guess) < 1:
guess = input(«Впиши букву и нажми enter: «)[0]
if guess in guesses:
print(«Эта буква уже была!»)
guesses += guess
if guess not in word:
turns -= 1
Веб-парсинг
Веб-парсинг (Web Scraping) — это сбор информации в интернете из открытых источников. Парсинг относится к автоматизированным способам получения данных и выполняется по заданным условиям. Он позволяет собирать информацию из поисковой выдачи, а также открытые данные с сайтов и социальных сетей.
Python позволяет анализировать и использовать неструктурированные данные из Сети. Для этого можно использовать специальные Python-библиотеки: Beautiful Soup и Scrapy.
В качестве примера покажем, как узнать значение валюты относительно доллара США в системе Linux. Для этого:
- Откройте Терминал с помощью комбинации клавиш Ctrl + Alt + T.
- Установите библиотеки для парсинга и запросов:
pip install beautifulsoup4 requests - Создайте файл с названием currency_scrap.py и добавьте в него следующий код:
import requests
from bs4 import BeautifulSoup
URL = «https://www.x-rates.com/table/?from=USD&amount=1»
r = requests. get (URL)
soup = BeautifulSoup (r.content, «html.parser» )
ratelist = soup. findAll ( «table» , < "class" : "ratesTable" >)[ 0 ]. findAll ( «tbody» )
for tableVal in ratelist :
trList = tableVal. findAll ( «tr» )
Data Science и машинное обучение
Python помогает анализировать и манипулировать данными, а также подходит для работы со сложными алгоритмами. Для работы с информацией существует несколько библиотек. Самые популярные из них:
Кроме этого, существуют фреймворки с поддержкой Python для глубокого машинного обучения, например:
Варианты, которые мы описали в статье — только малая часть функционала Python. Вы можете воплотить практически любые идеи для программ на Python — этот язык функционален и одновременно компактен.
Как запустить Python приложение на хостинге SpaceWeb
На данный момент на наших серверах виртуального хостинга установлено 4 версии Python. Это Python 2.7, 3.3, 3.4, 3.8. Точные версии можно узнать командами:
$ python2.7 -V
Python 2.7.7
$ python3.3 -V
Python 3.3.5
$ python3.4 -V
Python 3.4.1
$ python3.8 -V
Python 3.8.5*
Запуск скрипта Python через CGI
CGI (от англ. Common Gateway Interface — «общий интерфейс шлюза») — стандарт интерфейса, используемого для связи внешей программы с веб-сервером. Программу, которая работает по такому интерфейсу совместно с веб-сервером, принято называть шлюзом, хотя многие предпочитаю названия «скрипт»(сценарий) или «CGI-программа».
Для запуска скриптов python через CGI необходимо выполнить следующие действия:
- Добавить в файл .htaccess директиву:
AddHandler cgi-script .py - Указать первой строкой в скрипте путь к используемому интерпретатору. Так называемый shebang.
#!/usr/bin/python2.7
для использования python 2.7.5 или другую версию. - Указать расширение для файла *.py и выставить на файл права доступа 755.
Запуск скрипта Python через MOD_WSGI
WSGI (англ. Web Server Gateway Interface) — стандарт взаимодействия между Python-программой, выполняющейся на стороне сервера, и самим веб-сервером, например, Apache.
Стандарт интерфейса (на английском): http://www.python.org/dev/peps/pep-0333/
По стандарту, WSGI-приложение должно удовлетворять следующим требованиям:
- должно быть вызываемым (callable) объектом (обычно это функция или метод);
- принимать два параметра:
словарь переменных окружения (environ);
обработчик запроса (start_response); - вызывать обработчик запроса с кодом HTTP-ответа и HTTP-заголовками;
- возвращать итерируемый объект с телом ответа;
Пример простого wsgi-приложения:
def application(environ, start_response):
status = ‘200 OK’
output = b’Hello World!’
response_headers = [(‘Content-type’, ‘text/plain’),
(‘Content-Length’, str(len(output)))]
start_response(status, response_headers)
return [output]
Если приложение будет использовать подключение к базе MySQL, то необходимо для неё сделать удаленный доступ для IP-адреса 127.0.0.1
Applications for Python
Python is used in many application domains. Here’s a sampling.
- The Python Package Index lists thousands of third party modules for Python.
Web and Internet Development
Python offers many choices for web development:
- Frameworks such as Django and Pyramid.
- Micro-frameworks such as Flask and Bottle.
- Advanced content management systems such as Plone and django CMS.
Python’s standard library supports many Internet protocols:
And the Package Index has yet more libraries:
-
, a powerful HTTP client library. , an HTML parser that can handle all sorts of oddball HTML. for parsing RSS/Atom feeds. , implementing the SSH2 protocol. , a framework for asynchronous network programming.
Scientific and Numeric
Python is widely used in scientific and numeric computing:
-
is a collection of packages for mathematics, science, and engineering. is a data analysis and modeling library. is a powerful interactive shell that features easy editing and recording of a work session, and supports visualizations and parallel computing.
- The Software Carpentry Course teaches basic skills for scientific computing, running bootcamps and providing open-access teaching materials.
Education
Python is a superb language for teaching programming, both at the introductory level and in more advanced courses.
- Books such as How to Think Like a Computer Scientist, Python Programming: An Introduction to Computer Science, and Practical Programming.
- The Education Special Interest Group is a good place to discuss teaching issues.
Desktop GUIs
The Tk GUI library is included with most binary distributions of Python.
Some toolkits that are usable on several platforms are available separately:
Platform-specific toolkits are also available:
Software Development
Python is often used as a support language for software developers, for build control and management, testing, and in many other ways.
-
for build control. and Apache Gump for automated continuous compilation and testing. or Trac for bug tracking and project management.
Business Applications
Python is also used to build ERP and e-commerce systems:
-
is an all-in-one management software that offers a range of business applications that form a complete suite of enterprise management applications. is a three-tier high-level general purpose application platform.
The PSF
The Python Software Foundation is the organization behind Python. Become a member of the PSF and help advance the software and our mission.
5 классных вещей, которые вы можете освоить с Python
Язык программирования Python стал третьим по популярности в индексе TIOBE и первым у PYPL. Джеймс Гавернер, сооснователь аналитической компании RedMonk, заявил, что этот язык уже стал основным для Data Science. Для каких проектов подходит Python и что вы сможете сделать уже сегодня, если знаете как работать с простейшими командами? Погнали разбираться вместе.
Преимущества Python
Python сравнительно лёгок в изучении за счёт простого синтаксиса и универсален благодаря богатой стандартной библиотеке (набору инструментов и готовых решений, которые не требуют дополнительной установки и настройки), поэтому его применяют в самых разных областях.
Python вообще славится своими классными библиотеками — в какой бы области вы ни делали проект, скорее всего, для этого уже есть готовая Python-библиотека: обработка изображений, математика, распознавание речи — для всего есть инструменты. А чтобы вы понимали, насколько это универсальный язык, посмотрите, для чего используют Python-фреймворки:
- NumPy — для работы с высокоуровневыми математическими функциями и многомерными массивами.
- Django и Flask — веб-разработка и веб-приложения (например, Pinterest, YouTube и Instagram написаны на Django).
- SQLAlchemy — для работы с базами данными с применением технологии ORM.
- Cocos2d — мобильные и браузерные игры.
- Tornado — для создания высокопроизводительных приложений, которые способны работать одновременно с сотней тысячей пользователей.
- Bubot — для программирования робототехники и домашней автоматизации, как вариант — использование на Raspberry Pi.
Мы собрали для вас несколько ярких примеров применения этого языка программирования — возможно именно они вдохновят вас на более глубокое изучение Python и создание чего-то инновационного.
1. Веб-разработка
Python имеет очень хорошую поддержку для веб-разработки с фреймворками. Распространенный стэк технологий, который можно встретить во многих компаниях — Django на бэкэнде и JavaScript фреймворк на фронтенде, например, React. Кстати такой стэк использует DropBox.
Пример — настройка доступа к файловой системе компьютера со смартфона
Вы можете получить доступ к вашей файловой системе Linux, запустив файловый сервер на вашем компьютере. Перейдите в нужный каталог, к которому вы хотите получить доступ, и выполните следующую команду: