
Python славится своей читаемостью и лаконичностью. Но даже опытные разработчики иногда пишут громоздкий код, не зная о встроенных возможностях языка.
В этой статье — пять практических трюков, которые помогут вам писать код короче, быстрее и понятнее:
enumerate()— номер и элемент за разzip()— объединение списков- List comprehension — списки в одну строку
- f-строки — форматирование без головной боли
- Распаковка (
*и**) — гибкая работа с данными
Все примеры работают на Python 3.6+ и не требуют сторонних библиотек.
Оглавление
1. enumerate(): индекс + элемент без ручного счётчика
Часто нужно не только перебрать список, но и знать номер элемента. Вместо громоздкого for i in range(len(...)) используйте enumerate():
fruits = ["яблоко", "банан", "апельсин"]
# Плохо:
for i in range(len(fruits)):
print(i, fruits[i])
# Хорошо:
for i, fruit in enumerate(fruits):
print(i, fruit)
Плюсы:
- Код короче и чище
- Нет риска ошибиться в индексации
- Можно задать начальное значение:
enumerate(fruits, start=1)
Документация: enumerate()
2. zip(): параллельный перебор нескольких списков
Нужно объединить два (или больше) списка поэлементно? Используйте zip():
names = ["Анна", "Борис", "Вера"]
ages = [25, 30, 22]
for name, age in zip(names, ages):
print(f"{name} — {age} лет")
Вывод:
Анна — 25 лет
Борис — 30 лет
Вера — 22 лет
Если списки разной длины, zip() остановится по самому короткому.
Для продолжения по самому длинному — используйте itertools.zip_longest.
Документация: zip()
3. List comprehension: создаём списки в одну строку
Вместо многострочного цикла для фильтрации или трансформации — используйте генераторы списков:
# Пример: возвести в квадрат числа от 1 до 5
numbers = [1, 2, 3, 4, 5]
squares = [x**2 for x in numbers]
print(squares) # [1, 4, 9, 16, 25]
# С фильтрацией: только чётные
evens = [x for x in numbers if x % 2 == 0]
print(evens) # [2, 4]
Преимущества:
- Выполняется быстрее обычного цикла
- Читается как математическая запись
- Поддерживает вложенные условия и циклы
Осторожно: не перегружайте — при сложной логике лучше использовать обычный
for.
4. f-строки: форматирование без .format() и %
С Python 3.6 появились f-строки — самый удобный способ вставлять переменные в текст:
name = "Мария"
age = 28
# Старый способ:
print("Привет, {}! Вам {} лет.".format(name, age))
# Новый способ:
print(f"Привет, {name}! Вам {age} лет.")
Можно даже вычислять внутри строки:
price = 199
tax = 0.2
print(f"Итого: {price * (1 + tax):.2f} руб.")
# Вывод: Итого: 238.80 руб.
f-строки быстрее, читабельнее и безопаснее. Они стали стандартом в современном Python.
5. Распаковка: * и ** для гибкости
Python позволяет «распаковывать» списки и словари прямо в вызове функции или присваивании.
Распаковка списков (*)
parts = ["Иван", "ivan@example.com", 35]
name, email, age = parts # обычное присваивание
# А если элементов больше?
data = ["Ольга", "olga@test.ru", 29, "Москва", "инженер"]
# Берём первые два, остальное — в «остаток»:
first, second, *rest = data
print(first) # Ольга
print(rest) # ['29', 'Москва', 'инженер']
Распаковка словарей (**)
def greet(name, age):
print(f"Здравствуйте, {name}! Вам {age} лет.")
user = {"name": "Алексей", "age": 40}
greet(**user) # распаковка словаря → greet(name="Алексей", age=40)
Практическое применение:
- Передача аргументов в функции
- Объединение словарей:
{**dict1, **dict2} - Гибкая обработка неизвестного числа параметров
Заключение
Эти пять трюков — не «магия», а стандартные возможности Python, которые делают код:
- Короче
- Быстрее
- Читабельнее
- Меньше подверженным ошибкам
Начните использовать хотя бы один из них уже сегодня — и вы сразу почувствуете разницу.
А когда освоите все — писать на Python станет ещё приятнее.
Если что-то осталось непонятным — пишите в комментариях! С радостью уточню, дополню или помогу с вашим кодом.
А чтобы не пропустить новые простые и полезные гайды по Python, автоматизации и разработке — подписывайтесь на мой Telegram-канал 🐍✨
Ваш интерес — лучшая мотивация для новых статей!