Несколько полезных, но малоизвестных фишек 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, которые можно использовать в различных сценариях. Попробуйте использовать их в реальных проектах, и вы оцените, насколько они хороши.