Python | Вопросы собесов
Сайт: https://easyoffer.ru/ Все каналы: t.me/+xGeAw6ckJ4liYzQy Контакт для рекламы: @sendme_ads
إظهار المزيد📈 نظرة تحليلية على قناة تيليجرام Python | Вопросы собесов
تُعد قناة Python | Вопросы собесов (@python_easy_ru) في القطاع اللغوي الروسية لاعباً نشطاً. يضم المجتمع حالياً 12 631 مشتركاً، محتلاً المرتبة 9 920 في فئة التكنولوجيات والتطبيقات والمرتبة 51 114 في منطقة روسيا.
📊 مؤشرات الجمهور والحراك
منذ تأسيسه في невідомо، حقق المشروع نمواً سريعاً وجمع 12 631 مشتركاً.
بحسب آخر البيانات بتاريخ 15 أكتوبر, 2026، تحافظ القناة على نشاط مستقر. خلال آخر 30 يوماً تغيّر عدد الأعضاء بمقدار -109، وفي آخر 24 ساعة بمقدار 0، مع بقاء الوصول العام مرتفعاً.
- حالة التحقق: غير موثّقة
- معدل التفاعل (ER): يبلغ متوسط تفاعل الجمهور 6.20%. وخلال أول 24 ساعة من النشر يحصد المحتوى عادةً 4.23% من ردود الفعل نسبةً إلى إجمالي المشتركين.
- وصول المنشورات: يحصل كل منشور على متوسط 783 مشاهدة. وخلال اليوم الأول يجمع عادةً 535 مشاهدة.
- التفاعلات والاستجابة: يتفاعل الجمهور بانتظام؛ متوسط التفاعلات لكل منشور يبلغ 3.
- الاهتمامات الموضوعية: يركز المحتوى على مواضيع رئيسية مثل ставь, модуль, строка, docker, alice.
📝 الوصف وسياسة المحتوى
يصف المؤلف القناة بأنها مساحة للتعبير عن الآراء الذاتية:
“Сайт: https://easyoffer.ru/
Все каналы: t.me/+xGeAw6ckJ4liYzQy
Контакт для рекламы: @sendme_ads”
بفضل وتيرة التحديث المرتفعة (أحدث البيانات بتاريخ 16 أكتوبر, 2026) تحافظ القناة على حداثتها ومستوى وصول مرتفع. وتُظهر التحليلات تفاعلاً نشطاً من الجمهور، ما يجعلها نقطة تأثير مهمة ضمن فئة التكنولوجيات والتطبيقات.
class Memento:
def __init__(self, state: str):
self._state = state
def get_state(self) -> str:
return self._state
class TextEditor:
def __init__(self):
self._state = ""
self._history = []
def type(self, text: str):
self._save_state()
self._state += text
def _save_state(self):
self._history.append(Memento(self._state))
def undo(self):
if not self._history:
return
memento = self._history.pop()
self._state = memento.get_state()
def get_content(self) -> str:
return self._state
# Клиентский код для использования паттерна Хранитель
def main():
editor = TextEditor()
editor.type("Hello, ")
editor.type("world!")
print(editor.get_content()) # Hello, world!
editor.undo()
print(editor.get_content()) # Hello,
editor.undo()
print(editor.get_content()) #
if __name__ == "__main__":
main()
1⃣`Memento`:
Сохраняет состояние объекта. Он предоставляет методы для получения сохраненного состояния, но не предоставляет методов для изменения состояния, что обеспечивает неизменность.
2⃣`TextEditor`:
Создает и использует объекты Memento для сохранения и восстановления своего состояния. Методы type и undo позволяют редактировать текст и отменять изменения.
3⃣`_save_state`:
Сохраняет текущее состояние редактора в истории перед каждым изменением.
4⃣`undo`:
Восстанавливает предыдущее состояние редактора из истории.
Ставь 👍 и забирай 📚 Базу знаний# Подсистема 1
class CPU:
def freeze(self):
print("CPU freezing")
def jump(self, position):
print(f"CPU jumping to {position}")
def execute(self):
print("CPU executing")
# Подсистема 2
class Memory:
def load(self, position, data):
print(f"Memory loading {data} at {position}")
# Подсистема 3
class HardDrive:
def read(self, lba, size):
return f"Reading {size} bytes from LBA {lba}"
# Фасад
class ComputerFacade:
def __init__(self):
self.cpu = CPU()
self.memory = Memory()
self.hard_drive = HardDrive()
def start(self):
self.cpu.freeze()
self.memory.load("0x00", self.hard_drive.read("100", "1024"))
self.cpu.jump("0x00")
self.cpu.execute()
# Клиентский код
computer = ComputerFacade()
computer.start()
🚩Плюсы
➕Упрощение интерфейса: Снижает количество методов, с которыми нужно взаимодействовать клиенту.
➕Изоляция клиентов от подсистем: Клиенты не зависят от деталей реализации подсистем, что упрощает их модификацию и замену.
➕Снижение связности: Уменьшает зависимость между клиентами и сложными подсистемами.
🚩Минусы
➖Ограниченная функциональность: Может возникнуть ситуация, когда фасад не предоставляет весь необходимый функционал, требующийся клиенту.
➖Дополнительный слой абстракции: Создание фасада добавляет ещё один уровень абстракции, что может слегка усложнить систему.
Ставь 👍 и забирай 📚 Базу знанийfrom abc import ABC, abstractmethod
# Абстрактный компонент
class Graphic(ABC):
@abstractmethod
def draw(self):
pass
# Лист
class Circle(Graphic):
def draw(self):
print("Drawing a Circle")
# Компоновщик
class CompositeGraphic(Graphic):
def __init__(self):
self.graphics = []
def add(self, graphic):
self.graphics.append(graphic)
def remove(self, graphic):
self.graphics.remove(graphic)
def draw(self):
for graphic in self.graphics:
graphic.draw()
# Клиентский код
circle1 = Circle()
circle2 = Circle()
composite = CompositeGraphic()
composite.add(circle1)
composite.add(circle2)
# Рисуем все элементы
composite.draw()
🚩Плюсы
➕Упрощение работы с иерархиями:
Легко обрабатывать как простые, так и составные объекты.
➕Расширяемость:
Можно легко добавлять новые типы компонентов.
➖Сложность:
Могут возникнуть сложности при управлении более сложными структурами.
Ставь 👍 и забирай 📚 Базу знаний# Implementor
class Device:
def is_enabled(self):
pass
def enable(self):
pass
def disable(self):
pass
# ConcreteImplementor
class TV(Device):
def __init__(self):
self._on = False
def is_enabled(self):
return self._on
def enable(self):
self._on = True
def disable(self):
self._on = False
class Radio(Device):
def __init__(self):
self._on = False
def is_enabled(self):
return self._on
def enable(self):
self._on = True
def disable(self):
self._on = False
# Abstraction
class RemoteControl:
def __init__(self, device):
self._device = device
def toggle_power(self):
if self._device.is_enabled():
self._device.disable()
else:
self._device.enable()
# RefinedAbstraction
class AdvancedRemoteControl(RemoteControl):
def mute(self):
print("Device is muted.")
# Клиентский код
tv = TV()
remote = RemoteControl(tv)
remote.toggle_power() # Включает TV
radio = Radio()
advanced_remote = AdvancedRemoteControl(radio)
advanced_remote.toggle_power() # Включает Radio
advanced_remote.mute() # Заглушает Radio
Ставь 👍 и забирай 📚 Базу знанийfrom abc import ABC, abstractmethod
# Интерфейс выражения
class Expression(ABC):
@abstractmethod
def interpret(self):
pass
# Конкретное выражение для чисел
class Number(Expression):
def __init__(self, value):
self.value = value
def interpret(self):
return self.value
# Конкретное выражение для сложения
class Add(Expression):
def __init__(self, left: Expression, right: Expression):
self.left = left
self.right = right
def interpret(self):
return self.left.interpret() + self.right.interpret()
# Конкретное выражение для умножения
class Multiply(Expression):
def __init__(self, left: Expression, right: Expression):
self.left = left
self.right = right
def interpret(self):
return self.left.interpret() * self.right.interpret()
# Клиентский код для использования паттерна Интерпретатор
def main():
# Создаем выражение: (5 + 10) * 2
expression = Multiply(
Add(Number(5), Number(10)),
Number(2)
)
result = expression.interpret()
print(f"Result: {result}") # Result: 30
if __name__ == "__main__":
main()
1⃣Интерфейс `Expression`:
Объявляет метод interpret, который должен реализовать каждое конкретное выражение.
2⃣Конкретные выражения:
Классы Number, Add и Multiply, которые реализуют интерфейс Expression и определяют интерпретацию чисел, сложения и умножения соответственно.
3⃣Компоновка выражений:
Выражения могут быть составными, например, Add и Multiply могут принимать другие выражения в качестве аргументов.
4⃣Интерпретация:
Метод interpret вызывается для вычисления значения выражения.
Ставь 👍 и забирай 📚 Базу знанийfrom abc import ABC, abstractmethod
# Интерфейс команды
class Command(ABC):
@abstractmethod
def execute(self):
pass
@abstractmethod
def undo(self):
pass
# Получатель команды
class Light:
def on(self):
print("Light is ON")
def off(self):
print("Light is OFF")
# Конкретная команда для включения света
class LightOnCommand(Command):
def __init__(self, light: Light):
self._light = light
def execute(self):
self._light.on()
def undo(self):
self._light.off()
# Конкретная команда для выключения света
class LightOffCommand(Command):
def __init__(self, light: Light):
self._light = light
def execute(self):
self._light.off()
def undo(self):
self._light.on()
# Инициатор команды
class RemoteControl:
def __init__(self):
self._command = None
def set_command(self, command: Command):
self._command = command
def press_button(self):
if self._command:
self._command.execute()
def press_undo(self):
if self._command:
self._command.undo()
# Использование паттерна Команда
light = Light()
light_on_command = LightOnCommand(light)
light_off_command = LightOffCommand(light)
remote = RemoteControl()
# Включаем свет
remote.set_command(light_on_command)
remote.press_button() # Light is ON
remote.press_undo() # Light is OFF
# Выключаем свет
remote.set_command(light_off_command)
remote.press_button() # Light is OFF
remote.press_undo() # Light is ON
🚩Как это работает
🟠Интерфейс `Command`:
Объявляет методы execute и undo, которые должны реализовать конкретные команды.
🟠Конкретные команды:
Реализуют интерфейс Command и определяют, как выполнять и отменять действия.
🟠Получатель (`Light`):
Объект, который выполняет действия (в данном случае, включение и выключение света).
🟠Инициатор (`RemoteControl`):
Объект, который вызывает команды. Он не знает, что именно делает команда, а просто вызывает её методы execute и undo.
Ставь 👍 и забирай 📚 Базу знанийfrom abc import ABC, abstractmethod
class Handler(ABC):
def __init__(self, successor=None):
self._successor = successor
@abstractmethod
def handle(self, request):
if self._successor:
return self._successor.handle(request)
return None
class BasicSupportHandler(Handler):
def handle(self, request):
if request == 'basic':
return "Basic support handled the request"
return super().handle(request)
class IntermediateSupportHandler(Handler):
def handle(self, request):
if request == 'intermediate':
return "Intermediate support handled the request"
return super().handle(request)
class AdvancedSupportHandler(Handler):
def handle(self, request):
if request == 'advanced':
return "Advanced support handled the request"
return super().handle(request)
# Создаем цепочку обработчиков
handler_chain = BasicSupportHandler(
IntermediateSupportHandler(
AdvancedSupportHandler()
)
)
# Тестируем цепочку
print(handler_chain.handle('basic')) # Basic support handled the request
print(handler_chain.handle('intermediate')) # Intermediate support handled the request
print(handler_chain.handle('advanced')) # Advanced support handled the request
print(handler_chain.handle('unknown')) # None (запрос не обработан)
🚩Как это работает
🟠Создание абстрактного класса `Handler`:
Все конкретные обработчики наследуются от него и реализуют метод handle.
🟠Реализация конкретных обработчиков:
Каждый обработчик проверяет, может ли он обработать запрос. Если может, он обрабатывает его и возвращает результат. Если не может, он передает запрос следующему обработчику в цепочке.
🟠Создание цепочки обработчиков:
Обработчики связываются друг с другом, образуя цепочку.
🟠Передача запроса: Запрос передается по цепочке, пока один из обработчиков не обработает его или пока не будет достигнут конец цепочки.
Ставь 👍 и забирай 📚 Базу знаний