🐍 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
❌ Rookie Mistakes #1 — list как аргумент по умолчанию
Кажется безобидно, но это одна из самых коварных ошибок в Python 😬
❌ Плохо
Почему так?
items создаётся один раз, а не при каждом вызове функции.
✅ Хорошо
🐍Вопросы с собесов -> ProstoPython
Кажется безобидно, но это одна из самых коварных ошибок в Python 😬
❌ Плохо
def add_item(item, items=[]):
items.append(item)
return items
print(add_item(1)) # [1]
print(add_item(2)) # [1, 2] 😱
Почему так?
items создаётся один раз, а не при каждом вызове функции.
✅ Хорошо
def add_item(item, items=None):
if items is None:
items = []
items.append(item)
return items
print(add_item(1)) # [1]
print(add_item(2)) # [2]
🐍Вопросы с собесов -> ProstoPython
Telegram
Prosto Python | вопросы с собесов
🚀 Python-собесы без сюрпризов! Разбираем реальные вопросы, ошибки кандидатов и лайфхаки, которые помогают пройти интервью. Джун → мидл → сеньор — прокачивайся и разнеси следующий собес! 🔥
🔥6
gather() используется в
🔹 запускает корутины параллельно
🔹 дожидается завершения всех задач
🔹 возвращает результаты в том же порядке, что и переданные задачи
Применяется, когда нужно выполнить несколько асинхронных операций одновременно.
🐍Вопросы с собесов -> ProstoPython
asyncio для одновременного запуска и ожидания нескольких асинхронных задач.🔹 запускает корутины параллельно
🔹 дожидается завершения всех задач
🔹 возвращает результаты в том же порядке, что и переданные задачи
Применяется, когда нужно выполнить несколько асинхронных операций одновременно.
🐍Вопросы с собесов -> ProstoPython
🏆3
👍1👎1🥰1
✅ Правильный ответ: Ошибка — UnboundLocalError
🧠 Почему так?
🔷Внутри foo() есть присваивание x = 5
🔷Python считает x локальной переменной во всей функции
🔷Но print(x) идёт до присваивания
🔷В итоге: обращение к локальной переменной до её создания -> ошибка
Как исправить, если нужен внешний x:
Или лучше так:
🔹 Вывод:
👉 Если в функции есть присваивание — переменная становится локальной, даже если она объявлена снаружи.
🐍Вопросы с собесов -> ProstoPython
🧠 Почему так?
🔷Внутри foo() есть присваивание x = 5
🔷Python считает x локальной переменной во всей функции
🔷Но print(x) идёт до присваивания
🔷В итоге: обращение к локальной переменной до её создания -> ошибка
Как исправить, если нужен внешний x:
def foo():
global x
print(x)
x = 5
Или лучше так:
def foo(x):
print(x)
x = 5
🔹 Вывод:
👉 Если в функции есть присваивание — переменная становится локальной, даже если она объявлена снаружи.
🐍Вопросы с собесов -> ProstoPython
Telegram
Prosto Python | вопросы с собесов
🚀 Python-собесы без сюрпризов! Разбираем реальные вопросы, ошибки кандидатов и лайфхаки, которые помогают пройти интервью. Джун → мидл → сеньор — прокачивайся и разнеси следующий собес! 🔥
🔥5⚡1🥰1😁1
🧰 Code Cleanup — выпуск 21
Тема: лишний else после return
Если функция уже что-то вернула — else чаще всего не нужен.
❌ Плохо:
Код работает, но else здесь — просто шум.
✅ Code Cleanup:
🧠 Почему так лучше:
🔹 меньше строк — быстрее читается
🔹 нет лишней вложенности
🔹 проще логика
🐍Вопросы с собесов -> ProstoPython
Тема: лишний else после return
Если функция уже что-то вернула — else чаще всего не нужен.
❌ Плохо:
def is_even(n):
if n % 2 == 0:
return True
else:
return False
Код работает, но else здесь — просто шум.
✅ Code Cleanup:
def is_even(n):
return n % 2 == 0
🧠 Почему так лучше:
🔹 меньше строк — быстрее читается
🔹 нет лишней вложенности
🔹 проще логика
🐍Вопросы с собесов -> ProstoPython
Telegram
Prosto Python | вопросы с собесов
🚀 Python-собесы без сюрпризов! Разбираем реальные вопросы, ошибки кандидатов и лайфхаки, которые помогают пройти интервью. Джун → мидл → сеньор — прокачивайся и разнеси следующий собес! 🔥
👍3❤1
Асинхронность работает быстрее, потому что не блокирует выполнение программы во время ожидания медленных операций.
🔹 пока одна задача ждёт I/O (сеть, БД, файлы), выполняются другие
🔹 процессор не простаивает
🔹 можно обслуживать много задач одним потоком
Итог: ресурсы используются эффективнее, особенно в I/O-нагруженных приложениях.
🐍Вопросы с собесов -> ProstoPython
🔹 пока одна задача ждёт I/O (сеть, БД, файлы), выполняются другие
🔹 процессор не простаивает
🔹 можно обслуживать много задач одним потоком
Итог: ресурсы используются эффективнее, особенно в I/O-нагруженных приложениях.
🐍Вопросы с собесов -> ProstoPython
🔥4
❌ Rookie Mistakes 2— ловушка or при значениях по умолчанию
Очень популярная ошибка у новичков.
❌ Плохо:
Ожидаешь 0, а получаешь 10 😬
✅ Хорошо:
🧠 Почему так происходит:
or возвращает первое truthy значение
0, '', [] — это False
Python думает, что значения «нет», хотя оно есть
🐍Вопросы с собесов -> ProstoPython
Очень популярная ошибка у новичков.
❌ Плохо:
def get_limit(limit):
return limit or 10
print(get_limit(0))
Ожидаешь 0, а получаешь 10 😬
✅ Хорошо:
def get_limit(limit):
if limit is None:
return 10
return limit
🧠 Почему так происходит:
or возвращает первое truthy значение
0, '', [] — это False
Python думает, что значения «нет», хотя оно есть
🐍Вопросы с собесов -> ProstoPython
Telegram
Prosto Python | вопросы с собесов
🚀 Python-собесы без сюрпризов! Разбираем реальные вопросы, ошибки кандидатов и лайфхаки, которые помогают пройти интервью. Джун → мидл → сеньор — прокачивайся и разнеси следующий собес! 🔥
🔥4
🧰 Code Cleanup — выпуск 22
Тема: не усложняй if, когда можно проще
Иногда условия пишут слишком подробно, хотя Python умеет короче.
❌ Плохо:
Работает, но сравнение с True здесь лишнее.
✅ Code Cleanup:
🧠 Почему так лучше:
🔹 код короче и чище
🔹 сразу читается логика
🔹 меньше лишних сравнений
🐍Вопросы с собесов -> ProstoPython
Тема: не усложняй if, когда можно проще
Иногда условия пишут слишком подробно, хотя Python умеет короче.
❌ Плохо:
if is_active == True:
send_email()
Работает, но сравнение с True здесь лишнее.
✅ Code Cleanup:
if is_active:
send_email()
🧠 Почему так лучше:
🔹 код короче и чище
🔹 сразу читается логика
🔹 меньше лишних сравнений
🐍Вопросы с собесов -> ProstoPython
Telegram
Prosto Python | вопросы с собесов
🚀 Python-собесы без сюрпризов! Разбираем реальные вопросы, ошибки кандидатов и лайфхаки, которые помогают пройти интервью. Джун → мидл → сеньор — прокачивайся и разнеси следующий собес! 🔥
🔥4
❌ Rookie Mistakes #3 — забыли return
Код выглядит нормально.
Но функция делает не то, что ожидаешь 😬
❌ Плохо:
Ожидаешь 90, а получаешь None.
✅ Хорошо:
🧠 Почему так происходит:
🔹Если в функции нет return — Python возвращает None
🔹Выражение само по себе ничего не возвращает
🔹Ошибка не всегда заметна сразу
🐍Вопросы с собесов -> ProstoPython
Код выглядит нормально.
Но функция делает не то, что ожидаешь 😬
❌ Плохо:
def calc_discount(price):
price * 0.9
result = calc_discount(100)
print(result)
Ожидаешь 90, а получаешь None.
✅ Хорошо:
def calc_discount(price):
return price * 0.9
🧠 Почему так происходит:
🔹Если в функции нет return — Python возвращает None
🔹Выражение само по себе ничего не возвращает
🔹Ошибка не всегда заметна сразу
🐍Вопросы с собесов -> ProstoPython
Telegram
Prosto Python | вопросы с собесов
🚀 Python-собесы без сюрпризов! Разбираем реальные вопросы, ошибки кандидатов и лайфхаки, которые помогают пройти интервью. Джун → мидл → сеньор — прокачивайся и разнеси следующий собес! 🔥
👍4
Git rebase нужен для переноса коммитов одной ветки поверх другой.
🔹 делает историю линейной и более чистой
🔹 убирает лишние merge-коммиты
🔹 позволяет «переиграть» изменения поверх актуальной версии ветки
Используется для упорядочивания истории перед слиянием.
🐍Вопросы с собесов -> ProstoPython
🔹 делает историю линейной и более чистой
🔹 убирает лишние merge-коммиты
🔹 позволяет «переиграть» изменения поверх актуальной версии ветки
Используется для упорядочивания истории перед слиянием.
🐍Вопросы с собесов -> ProstoPython
🔥4
❌ Rookie Mistakes #9 — путаница между sort() и sorted()
❌ Плохо:
Ожидаешь [1, 2, 3],
а получаешь None.
✅ Хорошо:
🧠 Почему так происходит:
🔹list.sort() сортирует список на месте и возвращает None
🔹sorted() создаёт новый отсортированный список
🔹Многие путают их из-за похожих названий
🐍Вопросы с собесов -> ProstoPython
❌ Плохо:
numbers = [3, 1, 2]
sorted_numbers = numbers.sort()
print(sorted_numbers)
Ожидаешь [1, 2, 3],
а получаешь None.
✅ Хорошо:
numbers = [3, 1, 2]
sorted_numbers = sorted(numbers)
print(sorted_numbers)
🧠 Почему так происходит:
🔹list.sort() сортирует список на месте и возвращает None
🔹sorted() создаёт новый отсортированный список
🔹Многие путают их из-за похожих названий
🐍Вопросы с собесов -> ProstoPython
Telegram
Prosto Python | вопросы с собесов
🚀 Python-собесы без сюрпризов! Разбираем реальные вопросы, ошибки кандидатов и лайфхаки, которые помогают пройти интервью. Джун → мидл → сеньор — прокачивайся и разнеси следующий собес! 🔥
👍3
GET
🔹 запрашивает данные
🔹 возвращает тело ответа
🔹 используется для получения ресурсов
POST
🔹 отправляет данные на сервер
🔹 создаёт или изменяет ресурс
🔹 передаёт данные в теле запроса
HEAD
🔹 работает как GET, но
🔹 возвращает только заголовки без тела ответа
🐍Вопросы с собесов -> ProstoPython
🔹 запрашивает данные
🔹 возвращает тело ответа
🔹 используется для получения ресурсов
POST
🔹 отправляет данные на сервер
🔹 создаёт или изменяет ресурс
🔹 передаёт данные в теле запроса
HEAD
🔹 работает как GET, но
🔹 возвращает только заголовки без тела ответа
🐍Вопросы с собесов -> ProstoPython
🔥4