Python | Вопросы собесов
Cайт: easyoffer.ru Реклама: @easyoffer_adv ВП: @easyoffer_vp Тесты t.me/+20tRfhrwPpM4NDQy Задачи t.me/+nsl4meWmhfQwNDVi Вакансии t.me/+cXGKkrOY2-w3ZTky
Показати більше📈 Аналітичний огляд Telegram-каналу Python | Вопросы собесов
Канал Python | Вопросы собесов (@python_easy_ru) у мовному сегменті Російська є активним учасником. На даний момент спільнота об'єднує 13 106 підписників, посідаючи 9 745 місце в категорії Технології та додатки та 50 714 місце у регіоні Росія.
📊 Показники аудиторії та динаміка
З моменту свого створення невідомо, проект продемонстрував стрімке зростання, зібравши аудиторію у 13 106 підписників.
За останніми даними від 09 червня, 2026, канал демонструє стабільну активність. Хоча за останні 30 днів спостерігається зміна кількості учасників на -53, а за останні 24 години на -3, загальне охоплення залишається високим.
- Статус верифікації: Не верифікований
- Рівень залученості (ER): Середній показник залученості аудиторії становить 8.62%. Протягом перших 24 годин після публікації контент зазвичай збирає 5.62% реакцій від загальної кількості підписників.
- Охоплення публікацій: В середньому кожен допис отримує 1 129 переглядів. Протягом першої доби публікація в середньому набирає 737 переглядів.
- Реакції та взаємодія: Аудиторія активно підтримує контент: середня кількість реакцій на один пост – 4.
- Тематичні інтереси: Контент зосереджений навколо ключових тем, таких як ставь, модуль, строка, docker, alice.
📝 Опис та контентна політика
Автор описує ресурс як майданчик для висловлення суб'єктивної думки:
“Cайт: easyoffer.ru
Реклама: @easyoffer_adv
ВП: @easyoffer_vp
Тесты t.me/+20tRfhrwPpM4NDQy
Задачи t.me/+nsl4meWmhfQwNDVi
Вакансии t.me/+cXGKkrOY2-w3ZTky”
Завдяки високій частоті оновлень (останні дані отримано 10 червня, 2026), канал підтримує актуальність та високий рівень охоплення публікацій. Аналітика показує, що аудиторія активно взаємодіє з контентом, що робить його важливою точкою впливу в категорії Технології та додатки.
bool() на объекте или объект используется в контексте, где требуется логическое значение (например, в условиях if), вызывается метод __bool__. Если метод __bool__ не определен, Python использует метод __len__: объект считается ложным (False), если его длина равна нулю, и истинным (True) в противном случае.
🚩Зачем нужен
Метод __bool__ позволяет вам определять, что будет считаться истинным или ложным для объектов вашего класса. Это может быть полезно в различных ситуациях, например, для проверки пустых контейнеров, валидных состояний объектов и т.д.
🚩Как использовать
Для того чтобы использовать метод __bool__, нужно его определить в своем классе. Метод должен возвращать либо True, либо False. В этом примере метод __bool__ проверяет значение атрибута value. Если value имеет значение, которое считается ложным (например, 0 или None), метод возвращает False. В противном случае, он возвращает True.
class MyClass:
def __init__(self, value):
self.value = value
def __bool__(self):
return bool(self.value)
# Примеры использования
obj1 = MyClass(0)
obj2 = MyClass(10)
print(bool(obj1)) # Вывод: False
print(bool(obj2)) # Вывод: True
if obj1:
print("obj1 is True")
else:
print("obj1 is False") # Этот блок выполнится
if obj2:
print("obj2 is True") # Этот блок выполнится
else:
print("obj2 is False")
🚩Пример более сложного использования
Допустим, у вас есть класс Box, который содержит предметы, и вы хотите, чтобы пустая коробка считалась ложной, а коробка с предметами — истинной.
class Box:
def __init__(self, items):
self.items = items
def __bool__(self):
return bool(self.items)
# Примеры использования
empty_box = Box([])
full_box = Box(['item1', 'item2'])
print(bool(empty_box)) # Вывод: False
print(bool(full_box)) # Вывод: True
if empty_box:
print("The box is not empty")
else:
print("The box is empty") # Этот блок выполнится
if full_box:
print("The box is not empty") # Этот блок выполнится
else:
print("The box is empty")
Ставь 👍 и забирай 📚 Базу знанийclass Vector:
def __init__(self, x, y):
self.x = x
self.y = y
def __add__(self, other):
return Vector(self.x + other.x, self.y + other.y)
def __repr__(self):
return f"Vector({self.x}, {self.y})"
v1 = Vector(1, 2)
v2 = Vector(3, 4)
print(v1 + v2) # Вывод: Vector(4, 6)
🟠Метод `__mul__`
Этот метод отвечает за операцию умножения. Его можно использовать, чтобы определить, как объекты вашего класса будут вести себя при использовании оператора *.
class Vector:
def __init__(self, x, y):
self.x = x
self.y = y
def __mul__(self, scalar):
return Vector(self.x * scalar, self.y * scalar)
def __repr__(self):
return f"Vector({self.x}, {self.y})"
v = Vector(1, 2)
print(v * 3) # Вывод: Vector(3, 6)
🟠Метод `__sub__`
Этот метод отвечает за операцию вычитания. Он позволяет вам определить поведение объектов при использовании оператора -.
class Vector:
def __init__(self, x, y):
self.x = x
self.y = y
def __sub__(self, other):
return Vector(self.x - other.x, self.y - other.y)
def __repr__(self):
return f"Vector({self.x}, {self.y})"
v1 = Vector(5, 7)
v2 = Vector(2, 3)
print(v1 - v2) # Вывод: Vector(3, 4)
🟠Метод `__truediv__`
Этот метод отвечает за операцию деления. Он позволяет определить, как объекты вашего класса будут вести себя при использовании оператора /.
class Vector:
def __init__(self, x, y):
self.x = x
self.y = y
def __truediv__(self, scalar):
return Vector(self.x / scalar, self.y / scalar)
def __repr__(self):
return f"Vector({self.x}, {self.y})"
v = Vector(8, 4)
print(v / 2) # Вывод: Vector(4.0, 2.0)
Ставь 👍 и забирай 📚 Базу знанийMock
from unittest.mock import Mock
# Создание мок-объекта
mock = Mock()
# Настройка мок-объекта
mock.some_method.return_value = "Mocked Result"
# Вызов метода и проверка результата
result = mock.some_method()
print(result) # Вывод: Mocked Result
Использование patch для замены объектов
import unittest
from unittest.mock import patch
# Пример функции, которая вызывает внешний API
def fetch_data():
import requests
response = requests.get("http://example.com/api/data")
return response.json()
# Тестирование функции с использованием patch
class TestFetchData(unittest.TestCase):
@patch('requests.get')
def test_fetch_data(self, mock_get):
# Настройка мок-ответа
mock_get.return_value.json.return_value = {"key": "value"}
# Вызов тестируемой функции
result = fetch_data()
# Проверка результата
self.assertEqual(result, {"key": "value"})
mock_get.assert_called_once_with("http://example.com/api/data")
if __name__ == '__main__':
unittest.main()
Использование MagicMock
from unittest.mock import MagicMock
# Создание объекта MagicMock
mock = MagicMock()
# Настройка возвращаемого значения для магического метода __str__
mock.__str__.return_value = "MagicMocked String"
print(str(mock)) # Вывод: MagicMocked String
Ставь 👍 и забирай 📚 Базу знанийdef add(a, b):
return a + b
2⃣Написание юнит-теста
import unittest
from my_module import add # Импортируем тестируемую функцию из модуля
class TestAddFunction(unittest.TestCase):
def test_add_positive_numbers(self):
self.assertEqual(add(2, 3), 5)
def test_add_negative_numbers(self):
self.assertEqual(add(-1, -1), -2)
def test_add_zero(self):
self.assertEqual(add(0, 0), 0)
if __name__ == '__main__':
unittest.main()
3⃣Запуск юнит-тестов
python test_add.py
Ставь 👍 и забирай 📚 Базу знанийclass Dog:
def bark(self):
return "Woof!"
# Оригинальное поведение
dog = Dog()
print(dog.bark()) # Вывод: Woof!
# Применение monkey patch
def new_bark(self):
return "Woof! Woof!"
Dog.bark = new_bark
# Измененное поведение
print(dog.bark()) # Вывод: Woof! Woof!
🟠Пример использования monkey patch для исправления ошибки
Допустим, у нас есть модуль math_operations.py с функцией, содержащей ошибку:
# math_operations.py
def add(a, b):
return a - b # Ошибка: должно быть сложение, а не вычитание
Мы можем использовать monkey patch, чтобы исправить эту ошибку, не изменяя исходный код:
import math_operations
def corrected_add(a, b):
return a + b
# Применение monkey patch
math_operations.add = corrected_add
# Теперь функция add работает правильно
print(math_operations.add(2, 3)) # Вывод: 5
🟠Использование monkey patch для расширения функциональности
Мы также можем использовать monkey patch для добавления новых методов в существующие классы:
class Cat:
def meow(self):
return "Meow!"
# Оригинальное поведение
cat = Cat()
print(cat.meow()) # Вывод: Meow!
# Применение monkey patch
def purr(self):
return "Purr..."
Cat.purr = purr
# Расширенное поведение
print(cat.purr()) # Вывод: Purr...
🚩Плюсы
➕Быстрое исправление багов без изменения исходного кода.
➕Возможность добавления функциональности к сторонним библиотекам.
➕Гибкость и мощь изменения поведения кода во время выполнения.
🚩Минусы
➖Может сделать код менее читаемым и более сложным для понимания.
➖Возможность возникновения конфликтов, если несколько частей кода пытаются изменить одно и то же поведение.
➖Трудности с поддержкой и отладкой кода, так как поведение может изменяться непредсказуемо.
Ставь 👍 и забирай 📚 Базу знанийopen(), которая возвращает объект файла. open() принимает два основных аргумента:
- Имя файла (путь к файлу).
- Режим открытия файла (например, чтение, запись, добавление и т.д.).
Примеры режимов:
- 'r': Открытие для чтения (по умолчанию).
- 'w': Открытие для записи (содержимое файла удаляется).
- 'a': Открытие для добавления (данные добавляются в конец файла).
- 'b': Бинарный режим (например, 'rb' или 'wb').
- '+': Открытие для чтения и записи (например, 'r+' или 'w+').
file = open('example.txt', 'r')
2⃣Чтение из файла
Для чтения данных из файла используются методы read(), readline() и readlines().
with open('example.txt', 'r') as file:
content = file.read()
print(content)
Пример чтения файла построчно:
with open('example.txt', 'r') as file:
for line in file:
print(line.strip())
3⃣Запись в файл
Для записи данных в файл используются методы write() и writelines().
with open('example.txt', 'w') as file:
file.write('Hello, World!')
Пример добавления строки в конец файла:
with open('example.txt', 'a') as file:
file.write('\nAppend this line')
4⃣Закрытие файла
Важно закрывать файл после работы с ним, чтобы освободить ресурсы. Это можно сделать с помощью метода close(), но лучше использовать конструкцию with, которая автоматически закрывает файл:
with open('example.txt', 'r') as file:
content = file.read()
# Файл автоматически закроется по завершении блока with
Пример полного цикла работы с файлом
# Открытие файла для записи
with open('example.txt', 'w') as file:
file.write('This is the first line.\n')
file.write('This is the second line.\n')
# Открытие файла для добавления
with open('example.txt', 'a') as file:
file.write('This line is added to the end of the file.\n')
# Открытие файла для чтения
with open('example.txt', 'r') as file:
for line in file:
print(line.strip())
5⃣Работа с бинарными файлами
Для работы с бинарными файлами используется режим 'b'. Например, чтение и запись изображений или других бинарных данных
# Чтение бинарного файла
with open('image.png', 'rb') as file:
data = file.read()
# Запись в бинарный файл
with open('copy_image.png', 'wb') as file:
file.write(data)
6⃣Исключения и обработка ошибок
Для обработки ошибок при работе с файлами можно использовать конструкцию try except:
try:
with open('example.txt', 'r') as file:
content = file.read()
except FileNotFoundError:
print("File not found.")
except IOError:
print("An error occurred while reading the file.")
Ставь 👍 и забирай 📚 Базу знанийtry блок: Содержит код, который потенциально может вызвать исключение.
🟠except блок: Содержит код, который выполняется, если в блоке try возникает исключение.
Общий синтаксис
try:
# Код, который может вызвать исключение
...
except SomeException as e:
# Код, который выполняется в случае возникновения исключения SomeException
...
try:
result = 10 / 0
except ZeroDivisionError as e:
print(f"Error occurred: {e}")
🚩Многоуровневая обработка исключений
Можно обрабатывать различные типы исключений по-разному. Здесь, если строку "abc" невозможно преобразовать в целое число, будет вызвано исключение ValueError, и соответствующее сообщение будет выведено.
try:
result = int("abc")
except ZeroDivisionError:
print("Attempted to divide by zero")
except ValueError:
print("Invalid value")
except Exception as e:
print(f"An unexpected error occurred: {e}")
🚩Блоки `else` и `finally`
🟠`else` блок: Выполняется, если в блоке try не возникло исключений.
🟠`finally` блок: Выполняется всегда, независимо от того, возникло исключение или нет. Используется для освобождения ресурсов, закрытия файлов и т.д.
try:
file = open('example.txt', 'r')
content = file.read()
except FileNotFoundError:
print("File not found")
else:
print("File read successfully")
finally:
file.close()
print("File closed")
Пример с использованием finally
try:
file = open('example.txt', 'r')
content = file.read()
except FileNotFoundError:
print("File not found")
else:
print("File read successfully")
finally:
try:
file.close()
print("File closed")
except NameError:
print("File was never opened")
Ставь 👍 и забирай 📚 Базу знаний
Вже доступно! Дослідження Telegram за 2025 — головні інсайти року 
