Python | Вопросы собесов
Сайт: https://easyoffer.ru/ Все каналы: t.me/+xGeAw6ckJ4liYzQy Контакт для рекламы: @sendme_ads
إظهار المزيد📈 نظرة تحليلية على قناة تيليجرام Python | Вопросы собесов
تُعد قناة Python | Вопросы собесов (@python_easy_ru) في القطاع اللغوي الروسية لاعباً نشطاً. يضم المجتمع حالياً 12 637 مشتركاً، محتلاً المرتبة 9 918 في فئة التكنولوجيات والتطبيقات والمرتبة 51 142 في منطقة روسيا.
📊 مؤشرات الجمهور والحراك
منذ تأسيسه في невідомо، حقق المشروع نمواً سريعاً وجمع 12 637 مشتركاً.
بحسب آخر البيانات بتاريخ 14 أكتوبر, 2026، تحافظ القناة على نشاط مستقر. خلال آخر 30 يوماً تغيّر عدد الأعضاء بمقدار -107، وفي آخر 24 ساعة بمقدار 0، مع بقاء الوصول العام مرتفعاً.
- حالة التحقق: غير موثّقة
- معدل التفاعل (ER): يبلغ متوسط تفاعل الجمهور 6.11%. وخلال أول 24 ساعة من النشر يحصد المحتوى عادةً 4.23% من ردود الفعل نسبةً إلى إجمالي المشتركين.
- وصول المنشورات: يحصل كل منشور على متوسط 772 مشاهدة. وخلال اليوم الأول يجمع عادةً 534 مشاهدة.
- التفاعلات والاستجابة: يتفاعل الجمهور بانتظام؛ متوسط التفاعلات لكل منشور يبلغ 3.
- الاهتمامات الموضوعية: يركز المحتوى على مواضيع رئيسية مثل ставь, модуль, строка, docker, alice.
📝 الوصف وسياسة المحتوى
يصف المؤلف القناة بأنها مساحة للتعبير عن الآراء الذاتية:
“Сайт: https://easyoffer.ru/
Все каналы: t.me/+xGeAw6ckJ4liYzQy
Контакт для рекламы: @sendme_ads”
بفضل وتيرة التحديث المرتفعة (أحدث البيانات بتاريخ 15 أكتوبر, 2026) تحافظ القناة على حداثتها ومستوى وصول مرتفع. وتُظهر التحليلات تفاعلاً نشطاً من الجمهور، ما يجعلها نقطة تأثير مهمة ضمن فئة التكنولوجيات والتطبيقات.
type() можно узнать тип любого объекта.
x = 10
print(type(x)) # <class 'int'>
🟠Проверка наличия атрибутов и методов
Функции hasattr(), getattr() и setattr() позволяют проверять и манипулировать атрибутами объектов.
class MyClass:
def __init__(self, value):
self.value = value
obj = MyClass(5)
# Проверка наличия атрибута
print(hasattr(obj, 'value')) # True
# Получение значения атрибута
print(getattr(obj, 'value')) # 5
# Установка значения атрибута
setattr(obj, 'value', 10)
print(getattr(obj, 'value')) # 10
🟠Исследование структуры класса
Модуль inspect предоставляет функции для получения информации о классах, методах и функциях.
import inspect
class MyClass:
def method(self):
pass
# Получение всех методов класса
methods = inspect.getmembers(MyClass, predicate=inspect.isfunction)
print(methods) # [('method', <function MyClass.method at 0x...>)]
🟠Список атрибутов и методов объекта
Встроенная функция dir() возвращает список всех атрибутов и методов объекта.
class MyClass:
def method(self):
pass
obj = MyClass()
print(dir(obj))
# ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__',
# '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__',
# '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'method']
🟠Работа с модулем `inspect`
Модуль inspect предоставляет функции для получения информации о живых объектах, включая функции, методы, классы и модули.
import inspect
def my_function():
pass
# Получение информации о функции
print(inspect.getmembers(my_function))
🚩Плюсы и минусы
➕Гибкость
Позволяет писать более общие и гибкие функции, которые могут работать с различными типами данных.
➕Отладка и тестирование
Облегчает отладку и тестирование кода, предоставляя средства для анализа объектов и их состояния.
➖Сложность
Может сделать код более сложным для понимания и сопровождения.
➖Производительность
Интроспекция может повлиять на производительность, особенно при частом использовании в критически важных участках кода.
Ставь 👍 и забирай 📚 Базу знанийid = models.AutoField(primary_key=True)
🟠Поле CharField
Поле для хранения строк с фиксированной максимальной длиной.
name = models.CharField(max_length=100)
🟠Поле TextField
Поле для хранения длинных текстов.
description = models.TextField()
🟠Поле IntegerField
Поле для хранения целых чисел.
age = models.IntegerField()
🟠Поле FloatField
Поле для хранения чисел с плавающей запятой.
price = models.FloatField()
🟠Поле BooleanField
Поле для хранения булевых значений (True/False).
is_active = models.BooleanField(default=True)
🟠Поле DateTimeField
Поле для хранения даты и времени.
created_at = models.DateTimeField(auto_now_add=True)
🟠Поле ForeignKey
Поле для создания связи "многие к одному" с другой моделью.
author = models.ForeignKey('Author', on_delete=models.CASCADE)
🟠Поле ManyToManyField
Поле для создания связи "многие ко многим" с другой моделью.
categories = models.ManyToManyField('Category')
🟠Поле OneToOneField
Поле для создания связи "один к одному" с другой моделью.
profile = models.OneToOneField('Profile', on_delete=models.CASCADE)
Ставь 👍 и забирай 📚 Базу знанийManager), чтобы добавить дополнительные методы для выполнения более сложных запросов к базе данных. Менеджеры используются для работы с наборами запросов (QuerySets) и предоставляют интерфейс для выполнения операций с базой данных.
🚩Зачем использовать кастомный менеджер модели?
🟠Повторное использование кода
Вынесение часто используемых запросов в методы менеджера позволяет избежать дублирования кода.
🟠Организация логики запросов
Логика сложных запросов инкапсулируется в методы менеджера, делая код моделей и представлений более чистым и удобочитаемым.
🟠Расширение функциональности
Добавление новых методов к менеджеру позволяет выполнять специфичные для приложения операции с данными.
🚩Пример создания кастомного менеджера модели
1⃣Создание кастомного менеджера
from django.db import models
from django.utils import timezone
class BookManager(models.Manager):
def by_author(self, author_name):
return self.filter(author__name=author_name)
def published_recently(self):
one_month_ago = timezone.now() - timezone.timedelta(days=30)
return self.filter(publication_date__gte=one_month_ago)
2⃣Использование кастомного менеджера в модели
from django.db import models
class Author(models.Model):
name = models.CharField(max_length=100)
class Book(models.Model):
title = models.CharField(max_length=200)
author = models.ForeignKey(Author, on_delete=models.CASCADE)
publication_date = models.DateTimeField()
# Подключение кастомного менеджера
objects = BookManager()
3⃣Пример использования кастомного менеджера
# Получение книг по автору
books_by_author = Book.objects.by_author('John Doe')
for book in books_by_author:
print(book.title)
# Получение книг, опубликованных за последний месяц
recent_books = Book.objects.published_recently()
for book in recent_books:
print(book.title)
Ставь 👍 и забирай 📚 Базу знанийclass User:
def __init__(self, name, email):
self.name = name
self.email = email
def save(self):
# Сохранение данных пользователя в базу данных
print(f"Saving user {self.name} to the database.")
def send_welcome_email(self):
# Отправка приветственного сообщения на электронную почту
print(f"Sending welcome email to {self.email}.")
🚩Пример соблюдения
Для соблюдения принципа SRP разделим класс User на два отдельных класса: один для управления данными пользователя, другой для отправки сообщений электронной почты.
class User:
def __init__(self, name, email):
self.name = name
self.email = email
class UserRepository:
def save(self, user):
# Сохранение данных пользователя в базу данных
print(f"Saving user {user.name} to the database.")
class EmailService:
def send_welcome_email(self, user):
# Отправка приветственного сообщения на электронную почту
print(f"Sending welcome email to {user.email}.")
# Использование классов
user = User("Alice", "alice@example.com")
user_repository = UserRepository()
email_service = EmailService()
user_repository.save(user)
email_service.send_welcome_email(user)
🚩Плюсы
➕Упрощение кода
Код становится проще для понимания, так как каждый класс выполняет только одну задачу.
➕Улучшение тестируемости
Легче писать тесты для классов, которые имеют одну ответственность.
➕Повышение гибкости
Проще вносить изменения в один аспект системы, не затрагивая другие.
➕Улучшение повторного использования
Классы, реализующие одну задачу, могут быть повторно использованы в других частях системы или в других проектах.
Ставь 👍 и забирай 📚 Базу знанийnpx create-next-app@latest my-isomorphic-app
cd my-isomorphic-app
npm run dev
Создание страницы с серверным рендерингом
// pages/index.js
import React from 'react';
const Home = ({ message }) => (
<div>
<h1>{message}</h1>
</div>
);
export async function getServerSideProps() {
return {
props: {
message: 'Hello from the server!',
},
};
}
export default Home;
Ставь 👍 и забирай 📚 Базу знаний