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
print("Упс! Ошибка")
print(f"У тебя осталось {turns} попыток")
if turns == 0:
print("Ты проиграл! :(") - Откройте Терминал с помощью комбинации клавиш Ctrl + Alt + T.
- Запустите игру с помощью команды:
python3 hangout.py
Вместо hangout.py укажите название файла игры.
Веб-парсинг
Веб-парсинг (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" )
for trVal in trList[ : 6 ] :
print (trVal.text)
- Выполните команду:
python3 currency_scrap.py
Data Science и машинное обучение
Python помогает анализировать и манипулировать данными, а также подходит для работы со сложными алгоритмами. Для работы с информацией существует несколько библиотек. Самые популярные из них:
- NumPy,
- Pandas,
- Matplotlib,
- Seaborn.
Кроме этого, существуют фреймворки с поддержкой 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