1. Обмен переменных без временной переменной
Лайфхаки в Python: Советы для Эффективного и Элегантного Кода
Python известен своей простотой и читабельностью, но даже опытные разработчики могут не знать всех трюков, которые делают код лаконичнее и эффективнее. В этой статье — подборка лайфхаков, которые помогут писать на Python быстрее и с удовольствием.
1. Обмен переменных без временной переменной
Забыть про temp = a! В Python можно менять значения переменных одной строкой:
a, b = 10, 20
a, b = b, a # Теперь a = 20, b = 10
2. Распаковка элементов
Используйте * для распаковки списков и кортежей:
first, *rest, last = [1, 2, 3, 4, 5]
print(first) # 1
print(rest) # [2, 3, 4]
print(last) # 5
Также ** распаковывает словари в аргументы функции:
def greet(name, age):
print(f"{name} is {age} years old")
user = {"name": "Alice", "age": 30}
greet(**user) # Alice is 30 years old
3. List Comprehensions и Генераторы
Создавайте списки, словари и множества в одну строку:
squares = [x**2 for x in range(10)] # [0, 1, 4, ..., 81]
Генераторы экономят память, так как элементы вычисляются «на лету»:
gen = (x**2 for x in range(10)) # Не хранит весь список в памяти
4. Использование enumerate и zip
Получайте индекс и значение в цикле с enumerate:
fruits = ["apple", "banana", "cherry"]
for idx, fruit in enumerate(fruits, start=1):
print(f"{idx}. {fruit}")
Объединяйте списки с zip:
names = ["Alice", "Bob"]
ages = [25, 30]
for name, age in zip(names, ages):
print(f"{name} is {age}")
5. Словари: get, setdefault, defaultdict
Избегайте KeyError с методом get():
user = {"name": "Alice"}
age = user.get("age", 30) # 30 (значение по умолчанию)
setdefault устанавливает значение, если ключа нет:
user.setdefault("age", 30) # Теперь user["age"] = 30
Для сложных случаев используйте defaultdict:
from collections import defaultdict
counts = defaultdict(int) # Дефолтное значение 0
counts["a"] += 1 # Не вызывает ошибку
6. F-строки для Форматирования
С Python 3.6+ форматирование стало проще:
name = "Alice"
age = 30
print(f"{name} is {age} years old. Next year: {age + 1}")
7. Оператор := (Морж)
С Python 3.8+ можно присваивать значения в выражениях:
while (line := input("Введите текст: ")) != "стоп":
print(f"Вы ввели: {line}")
8. Игнорирование значений с _
Если какое-то значение не нужно, используйте _:
x, _, z = (1, 2, 3) # Игнорируем второй элемент
9. Контекстные менеджеры
Автоматически закрывайте файлы и управляйте ресурсами:
with open("file.txt", "r") as file:
content = file.read()
# Файл закрыт автоматически
10. Сортировка с ключом
Используйте key в сортировке для кастомных правил:
users = [{"name": "Alice", "age": 30}, {"name": "Bob", "age": 25}]
sorted_users = sorted(users, key=lambda x: x["age"])
Заключение
Эти лайфхаки не только делают код короче, но и повышают его читабельность и эффективность. Экспериментируйте, применяйте их в проектах и открывайте для себя новые возможности Python! Помните: лучший код — не обязательно самый сложный, а тот, который легко понять и поддерживать. 🐍