С множествами (set) можно выполнять следующие действия:
🔹 Добавление элементов —
🔹 Удаление элементов —
🔹 Проверка принадлежности —
🔹 Объединение —
🔹 Пересечение —
🔹 Разность —
🔹 Симметрическая разность —
🔹 Сравнение множеств — подмножество, надмножество, равенство
Множества удобны для работы с уникальными элементами и быстрых операций над ними.
🐍Вопросы с собесов -> ProstoPython
🔹 Добавление элементов —
add(), update()🔹 Удаление элементов —
remove(), discard(), pop()🔹 Проверка принадлежности —
in🔹 Объединение —
union() или |🔹 Пересечение —
intersection() или &🔹 Разность —
difference() или -🔹 Симметрическая разность —
symmetric_difference() или ^🔹 Сравнение множеств — подмножество, надмножество, равенство
Множества удобны для работы с уникальными элементами и быстрых операций над ними.
🐍Вопросы с собесов -> ProstoPython
👍4❤2
Да, в Python можно передавать функцию в качестве аргумента другой функции, потому что функции являются объектами первого класса.
Это позволяет:
🔹 передавать логику как параметр
🔹 писать универсальные и гибкие функции
🔹 использовать callbacks, обработчики, декораторы
👉 Пример из практики:
🐍Вопросы с собесов -> ProstoPython
Это позволяет:
🔹 передавать логику как параметр
🔹 писать универсальные и гибкие функции
🔹 использовать callbacks, обработчики, декораторы
👉 Пример из практики:
map(), filter(), sorted(key=...) принимают функции как аргументы.🐍Вопросы с собесов -> ProstoPython
🔥5❤1
🐍 Python Style — выпуск №4
Тема: if x is None vs if not x — тонкость, на которой часто падают
Это одна из тех мелочей, которые отличают аккуратный Python-код от потенциального бага.
❌ Плохой стиль (и возможная ошибка):
На первый взгляд — нормально.
Но not value сработает для:
🔹0
🔹0.0
🔹""
🔹[]
🔹{}
И если 0 — валидное значение, логика ломается 💥
✅ Python Style (явно и безопасно):
Теперь:
🔹None -> отсутствие значения
🔹0 -> нормальное число
🔹логика читается однозначно
🐍Вопросы с собесов -> ProstoPython
Тема: if x is None vs if not x — тонкость, на которой часто падают
Это одна из тех мелочей, которые отличают аккуратный Python-код от потенциального бага.
❌ Плохой стиль (и возможная ошибка):
def process(value):
if not value:
return "Нет данных"
return value * 2
На первый взгляд — нормально.
Но not value сработает для:
🔹0
🔹0.0
🔹""
🔹[]
🔹{}
И если 0 — валидное значение, логика ломается 💥
✅ Python Style (явно и безопасно):
def process(value):
if value is None:
return "Нет данных"
return value * 2
Теперь:
🔹None -> отсутствие значения
🔹0 -> нормальное число
🔹логика читается однозначно
🐍Вопросы с собесов -> ProstoPython
Telegram
Prosto Python | вопросы с собесов
🚀 Python-собесы без сюрпризов! Разбираем реальные вопросы, ошибки кандидатов и лайфхаки, которые помогают пройти интервью. Джун → мидл → сеньор — прокачивайся и разнеси следующий собес! 🔥
❤3👍2
🐍 Python Style — выпуск №5
Тема: ранний return вместо вложенных условий
Одна из самых частых причин «тяжёлого» кода — глубокая вложенность.
Читаешь функцию и будто спускаешься в подземелье 🕳😅
❌ Плохо читается (много вложенных if):
Работает, но чтобы понять логику — нужно напрячься.
✅ Python Style — используем ранний return:
🧠 Почему так лучше:
🔹 нет глубокой вложенности
🔹 каждая проверка — отдельное понятное правило
🔹 код читается сверху вниз, как инструкция
🔹 легче добавлять новые условия
🐍Вопросы с собесов -> ProstoPython
Тема: ранний return вместо вложенных условий
Одна из самых частых причин «тяжёлого» кода — глубокая вложенность.
Читаешь функцию и будто спускаешься в подземелье 🕳😅
❌ Плохо читается (много вложенных if):
def process_user(user):
if user:
if user.is_active:
if user.age >= 18:
return "Access granted"
else:
return "Too young"
else:
return "Inactive user"
else:
return "No user"
Работает, но чтобы понять логику — нужно напрячься.
✅ Python Style — используем ранний return:
def process_user(user):
if not user:
return "No user"
if not user.is_active:
return "Inactive user"
if user.age < 18:
return "Too young"
return "Access granted"
🧠 Почему так лучше:
🔹 нет глубокой вложенности
🔹 каждая проверка — отдельное понятное правило
🔹 код читается сверху вниз, как инструкция
🔹 легче добавлять новые условия
🐍Вопросы с собесов -> ProstoPython
Telegram
Prosto Python | вопросы с собесов
🚀 Python-собесы без сюрпризов! Разбираем реальные вопросы, ошибки кандидатов и лайфхаки, которые помогают пройти интервью. Джун → мидл → сеньор — прокачивайся и разнеси следующий собес! 🔥
🔥4
git commit нужен для сохранения текущего состояния проекта в истории Git.
🔹 фиксирует изменения в репозитории
🔹 создаёт точку, к которой можно вернуться
🔹 содержит описание того, что и зачем было изменено
🔹 позволяет отслеживать историю разработки и работать в команде
Каждый commit — это логически завершённый шаг в развитии проекта.
🐍Вопросы с собесов -> ProstoPython
🔹 фиксирует изменения в репозитории
🔹 создаёт точку, к которой можно вернуться
🔹 содержит описание того, что и зачем было изменено
🔹 позволяет отслеживать историю разработки и работать в команде
Каждый commit — это логически завершённый шаг в развитии проекта.
🐍Вопросы с собесов -> ProstoPython
❤4
🐍 Python Style — выпуск №6
Тема: enumerate вместо range(len())
Одна из частых мелочей, которая делает код «непитоничным» — перебор индексов вручную.
Работает, но выглядит как привет из C 😅
❌ Не лучший вариант (range(len())):
Читается тяжеловато: приходится держать в голове и индекс, и список.
✅ Python Style — используем enumerate:
```
users = ["Alice", "Bob", "Charlie"]
for i, user in enumerate(users):
print(i, user)
```
🧠 Почему так лучше:
🔹 сразу видно, что есть и индекс, и элемент
🔹 меньше «шумного» кода
🔹 не нужно обращаться к списку по индексу
🔹 сложнее допустить ошибку
📌 Бонус: если индекс нужен не с нуля
Читаемо. Коротко. По-питоновски 🐍✨
🐍Вопросы с собесов -> ProstoPython
Тема: enumerate вместо range(len())
Одна из частых мелочей, которая делает код «непитоничным» — перебор индексов вручную.
Работает, но выглядит как привет из C 😅
❌ Не лучший вариант (range(len())):
users = ["Alice", "Bob", "Charlie"]
for i in range(len(users)):
print(i, users[i])
Читается тяжеловато: приходится держать в голове и индекс, и список.
✅ Python Style — используем enumerate:
```
users = ["Alice", "Bob", "Charlie"]
for i, user in enumerate(users):
print(i, user)
```
🧠 Почему так лучше:
🔹 сразу видно, что есть и индекс, и элемент
🔹 меньше «шумного» кода
🔹 не нужно обращаться к списку по индексу
🔹 сложнее допустить ошибку
📌 Бонус: если индекс нужен не с нуля
for i, user in enumerate(users, start=1):
print(i, user)
Читаемо. Коротко. По-питоновски 🐍✨
🐍Вопросы с собесов -> ProstoPython
Telegram
Prosto Python | вопросы с собесов
🚀 Python-собесы без сюрпризов! Разбираем реальные вопросы, ошибки кандидатов и лайфхаки, которые помогают пройти интервью. Джун → мидл → сеньор — прокачивайся и разнеси следующий собес! 🔥
🔥3
С Новым годом 🎄
Пусть в новом году будет больше ясности —
в голове, в коде и в том, куда ты вообще идёшь.
Пусть Python приносит не только ошибки и Stack Overflow,
а ощущение, что ты реально что-то умеешь и растёшь.
Спасибо, что вы здесь и читаете канал.
В новом году продолжаем делать полезный контент🎉🎉🎉
🐍Вопросы с собесов -> ProstoPython
Пусть в новом году будет больше ясности —
в голове, в коде и в том, куда ты вообще идёшь.
Пусть Python приносит не только ошибки и Stack Overflow,
а ощущение, что ты реально что-то умеешь и растёшь.
Спасибо, что вы здесь и читаете канал.
В новом году продолжаем делать полезный контент🎉🎉🎉
🐍Вопросы с собесов -> ProstoPython
Telegram
Prosto Python | вопросы с собесов
🚀 Python-собесы без сюрпризов! Разбираем реальные вопросы, ошибки кандидатов и лайфхаки, которые помогают пройти интервью. Джун → мидл → сеньор — прокачивайся и разнеси следующий собес! 🔥
🎉5❤1
🐍 Python Style — выпуск №7
Тема: list comprehension вместо for + append
Частая картина в коде — собираем список через цикл.
Работает, но выглядит громоздко 👀
❌ Не лучший вариант (for + append):
Много строк и лишних движений для простой операции.
✅ Python Style — используем list comprehension:
🧠 Почему так лучше:
🔹 логика в одной строке
🔹 сразу видно, что и откуда берётся
🔹 меньше кода — меньше ошибок
🔹 стандартный питоновский приём
📌 Бонус: с условием
squares = [n ** 2 for n in numbers if n % 2 == 0]
Чисто. Ясно. По-питоновски 🐍✨
🐍Вопросы с собесов -> ProstoPython
Тема: list comprehension вместо for + append
Частая картина в коде — собираем список через цикл.
Работает, но выглядит громоздко 👀
❌ Не лучший вариант (for + append):
numbers = [1, 2, 3, 4, 5]
squares = []
for n in numbers:
squares.append(n ** 2)
Много строк и лишних движений для простой операции.
✅ Python Style — используем list comprehension:
numbers = [1, 2, 3, 4, 5]
squares = [n ** 2 for n in numbers]
🧠 Почему так лучше:
🔹 логика в одной строке
🔹 сразу видно, что и откуда берётся
🔹 меньше кода — меньше ошибок
🔹 стандартный питоновский приём
📌 Бонус: с условием
squares = [n ** 2 for n in numbers if n % 2 == 0]
Чисто. Ясно. По-питоновски 🐍✨
🐍Вопросы с собесов -> ProstoPython
Telegram
Prosto Python | вопросы с собесов
🚀 Python-собесы без сюрпризов! Разбираем реальные вопросы, ошибки кандидатов и лайфхаки, которые помогают пройти интервью. Джун → мидл → сеньор — прокачивайся и разнеси следующий собес! 🔥
👍4
WebSocket — это протокол, обеспечивающий постоянное двустороннее соединение между клиентом и сервером.
🔹 работает поверх одного TCP-соединения
🔹 позволяет серверу и клиенту обмениваться данными в реальном времени
🔹 не требует постоянных HTTP-запросов
Используется для чатов, уведомлений, онлайн-игр и других real-time приложений.
🐍Вопросы с собесов -> ProstoPython
🔹 работает поверх одного TCP-соединения
🔹 позволяет серверу и клиенту обмениваться данными в реальном времени
🔹 не требует постоянных HTTP-запросов
Используется для чатов, уведомлений, онлайн-игр и других real-time приложений.
🐍Вопросы с собесов -> ProstoPython
🔥3👍2
Денормализация — это намеренное добавление избыточных данных в базу для ускорения чтения запросов.
🔹 снижает количество JOIN
🔹 повышает производительность чтения
🔹 увеличивает дублирование данных
🔹 усложняет обновление и поддержку целостности
Используется, когда скорость чтения важнее строгой нормализации.
🐍Вопросы с собесов -> ProstoPython
🔹 снижает количество JOIN
🔹 повышает производительность чтения
🔹 увеличивает дублирование данных
🔹 усложняет обновление и поддержку целостности
Используется, когда скорость чтения важнее строгой нормализации.
🐍Вопросы с собесов -> ProstoPython
🔥4
🐍 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