🐍 Python Style — выпуск №8
Тема: dict.get() вместо лишних if
Очень распространённый код, который работает, но выглядит перегруженным.
❌ Не лучший стиль:
Логика простая, а кода много.
✅ Python Style:
Коротко и сразу понятно:
👉 «возьми price, а если нет — пусть будет 0»
🧠 Почему это хороший стиль:
🔹 меньше кода
🔹 меньше условий
🔹 ниже шанс ошибки
🔹 читается в одну строку
📌 Правило Python Style:
Если словарь -> сначала думай про get().
🐍Вопросы с собесов -> ProstoPython
Тема: dict.get() вместо лишних if
Очень распространённый код, который работает, но выглядит перегруженным.
❌ Не лучший стиль:
if "price" in data:
price = data["price"]
else:
price = 0
Логика простая, а кода много.
✅ Python Style:
price = data.get("price", 0)Коротко и сразу понятно:
👉 «возьми price, а если нет — пусть будет 0»
🧠 Почему это хороший стиль:
🔹 меньше кода
🔹 меньше условий
🔹 ниже шанс ошибки
🔹 читается в одну строку
📌 Правило Python Style:
Если словарь -> сначала думай про get().
🐍Вопросы с собесов -> ProstoPython
Telegram
Prosto Python | вопросы с собесов
🚀 Python-собесы без сюрпризов! Разбираем реальные вопросы, ошибки кандидатов и лайфхаки, которые помогают пройти интервью. Джун → мидл → сеньор — прокачивайся и разнеси следующий собес! 🔥
🔥4
Пакет — это набор связанных модулей, объединённых в одну структуру.
🔹 используется для организации и структурирования кода
🔹 обычно представляет собой каталог с модулями
🔹 позволяет удобно импортировать и переиспользовать код
В Python пакет — это способ логически группировать функциональность.
🐍Вопросы с собесов -> ProstoPython
🔹 используется для организации и структурирования кода
🔹 обычно представляет собой каталог с модулями
🔹 позволяет удобно импортировать и переиспользовать код
В Python пакет — это способ логически группировать функциональность.
🐍Вопросы с собесов -> ProstoPython
❤4
🐍 Python Style — выпуск №9
Тема: не используй == True и == False
Код может работать идеально… и при этом выглядеть странно 👀
Один из самых частых примеров — сравнение с True и False.
❌ Плохой стиль:
Или ещё хуже:
✅ Python Style:
🧠 Почему так лучше:
🔹 короче и чище
🔹 читается как обычная речь
🔹 меньше визуального шума
🔹 это официальный стиль Python (PEP 8)
🐍Вопросы с собесов -> ProstoPython
Тема: не используй == True и == False
Код может работать идеально… и при этом выглядеть странно 👀
Один из самых частых примеров — сравнение с True и False.
❌ Плохой стиль:
if is_active == True:
send_email()
Или ещё хуже:
if is_active == False:
block_user()
✅ Python Style:
if is_active:
send_email()
if not is_active:
block_user()
🧠 Почему так лучше:
🔹 короче и чище
🔹 читается как обычная речь
🔹 меньше визуального шума
🔹 это официальный стиль Python (PEP 8)
🐍Вопросы с собесов -> ProstoPython
Telegram
Prosto Python | вопросы с собесов
🚀 Python-собесы без сюрпризов! Разбираем реальные вопросы, ошибки кандидатов и лайфхаки, которые помогают пройти интервью. Джун → мидл → сеньор — прокачивайся и разнеси следующий собес! 🔥
🔥3
PEP 8 — это официальный стиль-гайд Python, который описывает правила оформления кода.
🔹 отступы и длину строк
🔹 именование переменных, функций и классов
🔹 расположение импортов
🔹 форматирование выражений
PEP 8 нужен, чтобы код был читаемым, единообразным и понятным для всей команды.
🐍Вопросы с собесов -> ProstoPython
🔹 отступы и длину строк
🔹 именование переменных, функций и классов
🔹 расположение импортов
🔹 форматирование выражений
PEP 8 нужен, чтобы код был читаемым, единообразным и понятным для всей команды.
🐍Вопросы с собесов -> ProstoPython
🏆4
🐍 Python Style
Тема: enumerate() вместо ручного счётчика
Очень часто можно увидеть такой код 👇
Работает, но выглядит как C, а не Python 😅
❌ Не по-питоничному:
✅ Python Style:
А если нужен старт не с нуля:
🧠 Почему это хороший стиль:
🔹 меньше кода
🔹 меньше ошибок со счётчиком
🔹 читается в одну строку
🔹 сразу видно намерение
🐍Вопросы с собесов -> ProstoPython
Тема: enumerate() вместо ручного счётчика
Очень часто можно увидеть такой код 👇
Работает, но выглядит как C, а не Python 😅
❌ Не по-питоничному:
i = 0
for item in items:
print(i, item)
i += 1
✅ Python Style:
for i, item in enumerate(items):
print(i, item)
А если нужен старт не с нуля:
for i, item in enumerate(items, start=1):
print(i, item)
🧠 Почему это хороший стиль:
🔹 меньше кода
🔹 меньше ошибок со счётчиком
🔹 читается в одну строку
🔹 сразу видно намерение
🐍Вопросы с собесов -> ProstoPython
Telegram
Prosto Python | вопросы с собесов
🚀 Python-собесы без сюрпризов! Разбираем реальные вопросы, ошибки кандидатов и лайфхаки, которые помогают пройти интервью. Джун → мидл → сеньор — прокачивайся и разнеси следующий собес! 🔥
👍4
HTTP — это протокол клиент-серверного взаимодействия по модели запрос-ответ.
🔹 клиент отправляет HTTP-запрос
🔹 сервер обрабатывает его и возвращает HTTP-ответ
🔹 каждый запрос независим и не хранит состояние (stateless)
🔹 данные передаются в виде заголовков и тела сообщения
HTTP используется для передачи ресурсов в вебе и лежит в основе работы сайтов и API.
🐍Вопросы с собесов -> ProstoPython
🔹 клиент отправляет HTTP-запрос
🔹 сервер обрабатывает его и возвращает HTTP-ответ
🔹 каждый запрос независим и не хранит состояние (stateless)
🔹 данные передаются в виде заголовков и тела сообщения
HTTP используется для передачи ресурсов в вебе и лежит в основе работы сайтов и API.
🐍Вопросы с собесов -> ProstoPython
🔥4
🧰 Code Cleanup — выпуск 17
Тема: не делай лишние проходы по данным
Код может быть «чистым» на вид, но при этом дорогим по производительности.
Особенно часто это встречается при работе со списками.
❌ До (лишние проходы):
Два цикла.
Два прохода.
✅ После (один проход):
🧠 Почему это лучше:
🔹 один проход вместо двух
🔹 меньше кода
🔹 проще читать
🔹 быстрее на больших данных
🐍Вопросы с собесов -> ProstoPython
Тема: не делай лишние проходы по данным
Код может быть «чистым» на вид, но при этом дорогим по производительности.
Особенно часто это встречается при работе со списками.
❌ До (лишние проходы):
numbers = [1, 2, 3, 4, 5, 6]
evens = []
for n in numbers:
if n % 2 == 0:
evens.append(n)
squares = []
for n in evens:
squares.append(n * n)
Два цикла.
Два прохода.
✅ После (один проход):
squares = [n * n for n in numbers if n % 2 == 0]
🧠 Почему это лучше:
🔹 один проход вместо двух
🔹 меньше кода
🔹 проще читать
🔹 быстрее на больших данных
🐍Вопросы с собесов -> ProstoPython
Telegram
Prosto Python | вопросы с собесов
🚀 Python-собесы без сюрпризов! Разбираем реальные вопросы, ошибки кандидатов и лайфхаки, которые помогают пройти интервью. Джун → мидл → сеньор — прокачивайся и разнеси следующий собес! 🔥
👍4
🐍 Python Style
Тема: with open() вместо ручного закрытия файлов
Один из самых простых способов сделать код безопаснее —
не закрывать файлы вручную.
❌ Плохой стиль:
Что может пойти не так?
Если между open() и close() упадёт ошибка — файл останется открыт.
✅ Python Style:
🧠 Почему так лучше:
🔹 файл закроется автоматически
🔹 код короче и чище
🔹 безопасно при ошибках
🔹 стандарт де-факто в Python
🐍Вопросы с собесов -> ProstoPython
Тема: with open() вместо ручного закрытия файлов
Один из самых простых способов сделать код безопаснее —
не закрывать файлы вручную.
❌ Плохой стиль:
file = open("data.txt", "r")
data = file.read()
file.close()Что может пойти не так?
Если между open() и close() упадёт ошибка — файл останется открыт.
✅ Python Style:
with open("data.txt", "r") as file:
data = file.read()🧠 Почему так лучше:
🔹 файл закроется автоматически
🔹 код короче и чище
🔹 безопасно при ошибках
🔹 стандарт де-факто в Python
🐍Вопросы с собесов -> ProstoPython
Telegram
Prosto Python | вопросы с собесов
🚀 Python-собесы без сюрпризов! Разбираем реальные вопросы, ошибки кандидатов и лайфхаки, которые помогают пройти интервью. Джун → мидл → сеньор — прокачивайся и разнеси следующий собес! 🔥
🔥4
Объект первого класса — это сущность, с которой можно обращаться так же, как с обычными значениями.
🔹 присваивать переменной
🔹 передавать как аргумент функции
🔹 возвращать из функции
🔹 хранить в структурах данных
В Python функции, классы и типы являются объектами первого класса.
🐍Вопросы с собесов -> ProstoPython
🔹 присваивать переменной
🔹 передавать как аргумент функции
🔹 возвращать из функции
🔹 хранить в структурах данных
В Python функции, классы и типы являются объектами первого класса.
🐍Вопросы с собесов -> ProstoPython
🔥4
Оценка сложности O(n) возникает, когда время работы алгоритма растёт линейно от количества входных данных — каждая операция выполняется один раз для каждого элемента.
O(n²) появляется, когда для каждого элемента выполняется полный проход по всем остальным (например, вложенные циклы).
O(n) предпочтительнее, потому что при росте данных время выполнения увеличивается гораздо медленнее: при больших
🐍Вопросы с собесов -> ProstoPython
O(n²) появляется, когда для каждого элемента выполняется полный проход по всем остальным (например, вложенные циклы).
O(n) предпочтительнее, потому что при росте данных время выполнения увеличивается гораздо медленнее: при больших
n линейный алгоритм работает на порядки быстрее квадратичного.🐍Вопросы с собесов -> ProstoPython
👍3
🐍 Python Style
Тема: не используй range(len(...)), если можно проще
Очень частый паттерн у начинающих — и почти никогда у опытных Python-разработчиков 👀
❌ Не по-питоничному:
Работает, но выглядит как перенос кода из других языков.
✅ Python Style:
А если нужен и индекс, и значение:
🧠 Почему так лучше:
🔹 меньше шума
🔹 меньше ошибок с индексами
🔹 код читается как обычный текст
🔹 Python создан именно для такого стиля
🐍Вопросы с собесов -> ProstoPython
Тема: не используй range(len(...)), если можно проще
Очень частый паттерн у начинающих — и почти никогда у опытных Python-разработчиков 👀
❌ Не по-питоничному:
for i in range(len(users)):
print(users[i])
Работает, но выглядит как перенос кода из других языков.
✅ Python Style:
for user in users:
print(user)
А если нужен и индекс, и значение:
for i, user in enumerate(users):
print(i, user)
🧠 Почему так лучше:
🔹 меньше шума
🔹 меньше ошибок с индексами
🔹 код читается как обычный текст
🔹 Python создан именно для такого стиля
🐍Вопросы с собесов -> ProstoPython
Telegram
Prosto Python | вопросы с собесов
🚀 Python-собесы без сюрпризов! Разбираем реальные вопросы, ошибки кандидатов и лайфхаки, которые помогают пройти интервью. Джун → мидл → сеньор — прокачивайся и разнеси следующий собес! 🔥
🔥3
🐍 Python Style
Тема: используй any() и all() вместо ручных проверок
Иногда в коде встречаются такие конструкции 👇
Работают, но выглядят громоздко и утомительно.
❌ Не по-питоничному:
✅ Python Style:
И наоборот — если нужно проверить все элементы:
🧠 Почему это хороший стиль:
🔹 короче и выразительнее
🔹 сразу видно намерение
🔹 работает лениво (эффективно)
🔹 меньше вспомогательных переменных
🐍Вопросы с собесов -> ProstoPython
Тема: используй any() и all() вместо ручных проверок
Иногда в коде встречаются такие конструкции 👇
Работают, но выглядят громоздко и утомительно.
❌ Не по-питоничному:
has_negative = False
for x in numbers:
if x < 0:
has_negative = True
break
✅ Python Style:
has_negative = any(x < 0 for x in numbers)
И наоборот — если нужно проверить все элементы:
all_positive = all(x > 0 for x in numbers)
🧠 Почему это хороший стиль:
🔹 короче и выразительнее
🔹 сразу видно намерение
🔹 работает лениво (эффективно)
🔹 меньше вспомогательных переменных
🐍Вопросы с собесов -> ProstoPython
Telegram
Prosto Python | вопросы с собесов
🚀 Python-собесы без сюрпризов! Разбираем реальные вопросы, ошибки кандидатов и лайфхаки, которые помогают пройти интервью. Джун → мидл → сеньор — прокачивайся и разнеси следующий собес! 🔥
👍4🔥2
🧰 Code Cleanup — выпуск 18
Тема: убираем магические числа из кода
Магические числа — это числа, которые появляются в коде без объяснения.
Например:
❌ Плохо:
Что значит 18? Почему именно 18? 🔍
✅ Code Cleanup:
Теперь понятно, что это за число, и если правила изменятся — достаточно поменять константу в одном месте.
🧠 Почему так лучше:
🔹 код читается сразу
🔹 проще поддерживать
🔹 меньше ошибок при изменениях
🔹 понятнее для команды и ревьюеров
🐍Вопросы с собесов -> ProstoPython
Тема: убираем магические числа из кода
Магические числа — это числа, которые появляются в коде без объяснения.
Например:
❌ Плохо:
if user.age >= 18:
allow_access()
Что значит 18? Почему именно 18? 🔍
✅ Code Cleanup:
ADULT_AGE = 18
if user.age >= ADULT_AGE:
allow_access()
Теперь понятно, что это за число, и если правила изменятся — достаточно поменять константу в одном месте.
🧠 Почему так лучше:
🔹 код читается сразу
🔹 проще поддерживать
🔹 меньше ошибок при изменениях
🔹 понятнее для команды и ревьюеров
🐍Вопросы с собесов -> ProstoPython
Telegram
Prosto Python | вопросы с собесов
🚀 Python-собесы без сюрпризов! Разбираем реальные вопросы, ошибки кандидатов и лайфхаки, которые помогают пройти интервью. Джун → мидл → сеньор — прокачивайся и разнеси следующий собес! 🔥
🏆4👍1
🐍 Python Style
Тема: используй set для проверок вхождения
Часто нужно проверить, есть ли элемент в коллекции 👇
Работает, но можно сделать быстрее и чище.
❌ Не по-питоничному:
(Особенно больно, если список большой)
✅ Python Style:
🧠 Почему это хороший стиль:
🔹 проверка in за O(1), а не O(n)
🔹 код сразу говорит: «мне важна уникальность и поиск»
🔹 меньше скрытых проблем с производительностью
🔹 идеально для фильтров, флагов, whitelists / blacklists
📌 Запомни:
list — когда важен порядок
set — когда важна скорость и уникальность
🐍Вопросы с собесов -> ProstoPython
Тема: используй set для проверок вхождения
Часто нужно проверить, есть ли элемент в коллекции 👇
Работает, но можно сделать быстрее и чище.
❌ Не по-питоничному:
items = [1, 3, 5, 7, 9]
if x in items:
print("Найдено")
(Особенно больно, если список большой)
✅ Python Style:
items = {1, 3, 5, 7, 9}
if x in items:
print("Найдено")
🧠 Почему это хороший стиль:
🔹 проверка in за O(1), а не O(n)
🔹 код сразу говорит: «мне важна уникальность и поиск»
🔹 меньше скрытых проблем с производительностью
🔹 идеально для фильтров, флагов, whitelists / blacklists
📌 Запомни:
list — когда важен порядок
set — когда важна скорость и уникальность
🐍Вопросы с собесов -> ProstoPython
Telegram
Prosto Python | вопросы с собесов
🚀 Python-собесы без сюрпризов! Разбираем реальные вопросы, ошибки кандидатов и лайфхаки, которые помогают пройти интервью. Джун → мидл → сеньор — прокачивайся и разнеси следующий собес! 🔥
🔥4👍2
Что выведет код сверху ?
Anonymous Poll
20%
[1] [2] [3]
69%
[1] [1, 2] [1, 2, 3]
11%
Ошибка
0%
[1], ошибка
✅ Правильный ответ
Правильный вариант:
🧠 Почему именно так
Подвох в значении по умолчанию аргумента
В Python:
🔷 значения аргументов по умолчанию
🔷 создаются один раз — в момент определения функции
🔷 и переиспользуются при каждом вызове
То есть
Что происходит пошагово:
1️⃣
🔷 список был пуст
🔷 добавили
🔷
2️⃣
🔷 это тот же самый список
🔷 добавили
🔷
3️⃣
🔷 снова тот же объект
🔷
Накидайте 🔥, если было полезно и интересно
🐍Вопросы с собесов -> ProstoPython
Правильный вариант:
[1]
[1, 2]
[1, 2, 3]
🧠 Почему именно так
Подвох в значении по умолчанию аргумента
items=[].В Python:
🔷 значения аргументов по умолчанию
🔷 создаются один раз — в момент определения функции
🔷 и переиспользуются при каждом вызове
То есть
items — это один и тот же список для всех вызовов add_item.Что происходит пошагово:
1️⃣
add_item(1)🔷 список был пуст
🔷 добавили
1🔷
[1]2️⃣
add_item(2)🔷 это тот же самый список
🔷 добавили
2🔷
[1, 2]3️⃣
add_item(3)🔷 снова тот же объект
🔷
[1, 2, 3]Накидайте 🔥, если было полезно и интересно
🐍Вопросы с собесов -> ProstoPython
Telegram
Prosto Python | вопросы с собесов
🚀 Python-собесы без сюрпризов! Разбираем реальные вопросы, ошибки кандидатов и лайфхаки, которые помогают пройти интервью. Джун → мидл → сеньор — прокачивайся и разнеси следующий собес! 🔥
🔥5
🧰 Code Cleanup — выпуск 19
Тема: почему else иногда лишний?
Часто в коде можно увидеть такую конструкцию:
❌ Плохо:
else здесь технически не нужен, но визуально утяжеляет код.
Читать приходится дольше, чем нужно 👀
✅ Code Cleanup:
Логика та же, но код стал проще и прямолинейнее.
🧠 Почему так лучше:
🔹 меньше уровней вложенности
🔹 код читается сверху вниз
🔹 проще добавлять новые условия
🔹 легче поддерживать и рефакторить
🐍Вопросы с собесов -> ProstoPython
Тема: почему else иногда лишний?
Часто в коде можно увидеть такую конструкцию:
❌ Плохо:
if user.is_banned:
return "Access denied"
else:
return "Welcome"
else здесь технически не нужен, но визуально утяжеляет код.
Читать приходится дольше, чем нужно 👀
✅ Code Cleanup:
if user.is_banned:
return "Access denied"
return "Welcome"Логика та же, но код стал проще и прямолинейнее.
🧠 Почему так лучше:
🔹 меньше уровней вложенности
🔹 код читается сверху вниз
🔹 проще добавлять новые условия
🔹 легче поддерживать и рефакторить
🐍Вопросы с собесов -> ProstoPython
Telegram
Prosto Python | вопросы с собесов
🚀 Python-собесы без сюрпризов! Разбираем реальные вопросы, ошибки кандидатов и лайфхаки, которые помогают пройти интервью. Джун → мидл → сеньор — прокачивайся и разнеси следующий собес! 🔥
👍6
🧰 Code Cleanup — выпуск 20
Тема: почему временные переменные — лишние
Иногда код усложняют переменные, которые живут пару строк и не несут смысла.
❌ Плохо:
✅ Code Cleanup:
🧠 Почему так лучше:
🔹 меньше шума в коде
🔹 сразу видно, что возвращается
🔹 проще читать и поддерживать
🔹 меньше мест для ошибок
🐍Вопросы с собесов -> ProstoPython
Тема: почему временные переменные — лишние
Иногда код усложняют переменные, которые живут пару строк и не несут смысла.
❌ Плохо:
result = user.balance * 0.9
return result
Работает, но переменная здесь ничего не объясняет и только засоряет код.✅ Code Cleanup:
return user.balance * 0.9
🧠 Почему так лучше:
🔹 меньше шума в коде
🔹 сразу видно, что возвращается
🔹 проще читать и поддерживать
🔹 меньше мест для ошибок
🐍Вопросы с собесов -> ProstoPython
Telegram
Prosto Python | вопросы с собесов
🚀 Python-собесы без сюрпризов! Разбираем реальные вопросы, ошибки кандидатов и лайфхаки, которые помогают пройти интервью. Джун → мидл → сеньор — прокачивайся и разнеси следующий собес! 🔥
🔥5
Dict comprehension — это краткий способ создания словаря на основе итерируемого объекта.
Пример:
Результат:
Можно добавлять условия:
Создаёт словарь только из чётных чисел.
🐍Вопросы с собесов -> ProstoPython
Пример:
numbers = [1, 2, 3, 4]
squares = {n: n**2 for n in numbers}
print(squares)
Результат:
{1: 1, 2: 4, 3: 9, 4: 16}Можно добавлять условия:
even_squares = {n: n**2 for n in numbers if n % 2 == 0}Создаёт словарь только из чётных чисел.
🐍Вопросы с собесов -> ProstoPython
👍5
Новая рубрика в канале — ❌ Rookie Mistakes
Рубрика про типичные ошибки, которые делают начинающие Python-разработчики.
Показываем, как делать не стоит, и сразу разбираем, как писать правильно и чище 🐍
Мы постоянно работаем над качеством контента, ищем лучшие примеры и придумываем новые форматы, чтобы тебе было проще расти как разработчику и увереннее чувствовать себя на собеседованиях 🚀
👉 Делись с друзьями и коллегами — пусть меньше людей наступает на одни и те же грабли 😉
🐍Вопросы с собесов -> ProstoPython
Рубрика про типичные ошибки, которые делают начинающие Python-разработчики.
Показываем, как делать не стоит, и сразу разбираем, как писать правильно и чище 🐍
Мы постоянно работаем над качеством контента, ищем лучшие примеры и придумываем новые форматы, чтобы тебе было проще расти как разработчику и увереннее чувствовать себя на собеседованиях 🚀
👉 Делись с друзьями и коллегами — пусть меньше людей наступает на одни и те же грабли 😉
🐍Вопросы с собесов -> ProstoPython
Telegram
Prosto Python | вопросы с собесов
🚀 Python-собесы без сюрпризов! Разбираем реальные вопросы, ошибки кандидатов и лайфхаки, которые помогают пройти интервью. Джун → мидл → сеньор — прокачивайся и разнеси следующий собес! 🔥
🔥4❤1