Несколько полезных, но малоизвестных фишек Python.

Python — один из самых популярных языков программирования. Он славится своим простым синтаксисом и распространенностью в совершенно разных областях — особенно в data science. Еще одной особенностью Python является его сообщество — именно оно наращивает и без того внушительный функционал языка.
Python имеет в своем вооружении более 290 тысяч пакетов, которые вы можете скачать из Python Package Index (PyPi). Все эти пакеты используются для разных целей: веб-разработка, машинное обучение, научные вычисления и т. д.
Чем больше вы пишете на Python, тем больше узнаете о приемах работы с этим языком. Сегодня мы познакомимся с не особо популярными фишками, но в то же время очень полезными. Они помогут вам во многих сценариях.
Начнем!
1. Именованные кортежи
Именованные кортежи — это легковесные объекты. Их преимущество заключается в том, что создавать их очень просто. Для этого потребуется встроенная функция, доступная в модуле Collections.
Если вам нужен класс для управления данными — рассмотрите в качестве альтернативы именованные кортежи.
from collections import namedtuple
Coordinate = namedtuple("Coordinate", "longitude latitude")
location = Coordinate(90, 37.5)
print("местонахождение:", location)
# получаем доступ к атрибуту с помощью точки
print(location.longitude, location.latitude)
# Вывод:
местонахождение: Coordinate(longitude=90, latitude=37.5)
(90, 37.5)
Создать именованный кортеж легко и просто, вам нужно лишь написать шаблон.
2. Блок for…else
Все мы знаем, что else неразрывно связан с блоком if, но вы, возможно, не в курсе, что else используется в цикле for.
В выражении for...else блок else выполняется только в том случае, если все итерации цикла будут успешно завершены. Если же выполнение цикла прерывается оператором break, то else не выполняется.
Случай первый:
for letter in 'foo':
print(letter)
else:
print('Все буквы напечатаны')
# Вывод:
f
o
o
Все буквы напечатаны
Случай второй:
for letter in 'foo':
print(letter)
if letter == 'o':
break
else:
print('Все буквы напечатаны')
# Вывод:
f
o
Во втором случае блок else не выполняется, потому что мы завершаем цикл с помощью break.
3. Распаковка аргументов
При вызове функции мы должны передать в нее что-то — аргументы, параметры. Обычно мы передаем их по отдельности.
В Python можно распаковать список или словарь и передать его содержимое в качестве аргументов с помощью * и **.
def total(a, b, c):
return a+b+c
list1 = [1,2,3]
print(total(*list1))
# Вывод:
6
4. Красивый вывод с помощью pprint
pprint — полезный модуль и, что замечательно, встроенный в стандартную библиотеку Python. Как видно из имени, pprint (pretty printer; англ. pretty — приятный, красивый) — используется для вывода данных и их структур в более приятном для чтения формате.
Вывод этого модуля гораздо приятнее глазу, чем тот, которым располагает встроенный print.
from pprint import pprint
response = [
{"статус": 200 , "результат": [1,2,3,4,5]},
{"статус": "OK", "результат": ['Привет', 'мир!']},
{"статус": 404, "результат": "данные не найдены"}
]
# распечатка с помощью print
print(response)
# распечатка с помощью pprint
pprint(response)
Вывод:
# распечатка с помощью print
[{'статус': 200, 'результат': [1, 2, 3, 4, 5]}, {'статус': 'OK', 'результат': ['Привет', 'мир!']}, {'статус': 404, 'результат': 'данные не найдены'}]
# распечатка с помощью pprint
[{'результат': [1, 2, 3, 4, 5], 'статус': 200},
{'результат': ['Привет', 'мир!'], 'статус': 'OK'},
{'результат': 'данные не найдены', 'статус': 404}]
Как можете заметить, pprint выводит информацию аккуратнее, а читать ее гораздо проще.
5. Перечисления с помощью enum
В Python перечисление может быть реализовано с помощью модуля enum. Перечисления полезны при объявлении неизменяемых и связанных между собой наборов констант. Примером могут послужить дни недели (с понедельника по воскресенье).
Перечисления создаются с помощью классов. В них содержатся переменные и связанные с ними значения.
from enum import Enum
Season = Enum('Season', 'winter summer spring autumn')
print(Season.summer.name)
print(Season.summer.value)
# пишем класс
class Season(Enum):
winter = 1
summer = 2
spring = 3
autumn = 4
print(Season.winter.name)
print(Season.winter.value)
Вывод:
summer 2 winter 1
Итоги
В этой статье мы разобрали несколько полезных фишек Python, которые можно использовать в различных сценариях. Попробуйте использовать их в реальных проектах, и вы оцените, насколько они хороши.
