⚖️ Старый vs Новый

⚡ Кратко

Используйте with open(...) вместо ручного close(), for вместо индексов, генераторы вместо промежуточных списков.

Ручное закрытие файла vs with

❌ Старый подход

f = open("data.txt", "r")
content = f.read()
f.close()

✅ Современный подход

with open("data.txt", "r") as f:
    content = f.read()

Индексы vs for

❌ С индексами

for i in range(len(words)):
    print(words[i])

✅ Через итератор

for word in words:
    print(word)

Список vs генератор

❌ Лишняя память

result = [x ** 2 for x in range(10**6)]
print(any(r > 100 for r in result))

✅ Генератор

result = (x ** 2 for x in range(10**6))
print(any(r > 100 for r in result))