Привет, Python-энтузиасты! 🐍 Если вы хотите прокачать свои навыки и сделать код более элегантным, то вы попали по адресу. Вот 10 хитростей, которые помогут вам стать настоящим мастером Python, и, возможно, даже заставят ваших коллег задуматься, не стоит ли им перейти на Java. 😉
enumerate()Зачем писать for i in range(len(my_list))? Просто используйте enumerate(), и ваш код станет не только короче, но и красивее!
for index, value in enumerate(my_list):
print(index, value)
Плюс: меньше шансов допустить ошибку при индексации. Минус: придется объяснять, что такое enumerate.
Когда нужно написать функцию на одну строку, но вы не хотите выглядеть как тот, кто пишет на Java:
square = lambda x: x ** 2
print(square(5)) # 25
Не забудьте, что лямбда-функции — это как однорукие бандиты: иногда они приносят удачу, а иногда — нет.
Зачем писать циклы, когда можно использовать списковые включения? Это как магия, только без шляпы и кроликов.
squares = [x ** 2 for x in range(10)]
Если бы у меня был доллар за каждую строку, которую я сократил с помощью списковых включений, я бы уже купил себе новый ноутбук.
zip() — ваш лучший другСобираетесь объединить два списка? Используйте zip(), и ваш код станет выглядеть так, будто вы только что закончили курсы по дизайну.
names = ['Alice', 'Bob', 'Charlie']
scores = [85, 90, 95]
combined = list(zip(names, scores))
Проблема: теперь вы не сможете выбрать, с кем из них дружить.
collections.defaultdictКогда вам нужно, чтобы словарь не выдавал ошибку при отсутствии ключа, используйте defaultdict. Это как ваша бабушка, которая всегда знает, где спрятаны печеньки.
from collections import defaultdict
d = defaultdict(int)
d['key'] += 1
Теперь ваш словарь всегда будет готов к вечеринке!
itertools — для настоящих гиковЕсли вы хотите, чтобы ваш код выглядел как заклинание, используйте библиотеку itertools. Это как швейцарский нож для итераций.
import itertools
combinations = list(itertools.combinations(['A', 'B', 'C'], 2))
Помните: с великой силой приходит великая ответственность... и много итераций.
contextlib для управления ресурсамиЗабудьте о try...finally. Используйте with, и ваш код станет выглядеть, как будто вы только что вышли из салона красоты.
from contextlib import closing
import urllib.request
with closing(urllib.request.urlopen('http://example.com')) as page:
for line in page:
print(line)
Теперь ваш код не только красив, но и безопасен!
functools.lru_cacheЕсли вы хотите ускорить свой код, используйте кэширование. Это как если бы у вас была машина времени, только без риска встретить себя в прошлом.
from functools import lru_cache
@lru_cache(maxsize=None)
def fibonacci(n):
if n < 2:
return n
return fibonacci(n-1) + fibonacci(n-2)
Теперь ваши рекурсивные функции будут работать быстрее, чем вы успеете сказать "где мой кофе?"
dataclasses для структурированных данныхХватит писать классы с __init__, используйте dataclasses, и ваш код станет выглядеть как произведение искусства.
from dataclasses import dataclass
@dataclass
class Person:
name: str
age: int
Теперь вы можете сосредоточиться на более важных вещах, например, на том, как избежать вопросов о возрасте.
All images are taken from the Pixabay.comБольше полезных статей 4adm.in