Python | Вопросы собесов
前往频道在 Telegram
Cайт: easyoffer.ru Реклама: @easyoffer_adv ВП: @easyoffer_vp Тесты t.me/+20tRfhrwPpM4NDQy Задачи t.me/+nsl4meWmhfQwNDVi Вакансии t.me/+cXGKkrOY2-w3ZTky
显示更多📈 Telegram 频道 Python | Вопросы собесов 的分析概览
频道 Python | Вопросы собесов (@python_easy_ru) 俄语 语言赛道中的 是活跃参与者。目前社区聚集了 13 104 名订阅者,在 技术与应用 类别中位列第 9 742,并在 俄罗斯 地区排名第 50 684 位。
📊 受众指标与增长动态
自 невідомо 创建以来,项目保持高速增长,吸引了 13 104 名订阅者。
根据 12 六月, 2026 的最新数据,频道保持稳定运转。过去 30 天订阅人数变化为 -57,过去 24 小时变化为 -3,整体触达仍然可观。
- 认证状态: 未认证
- 互动率 (ER): 平均受众互动率为 9.19%。内容发布后 24 小时内通常能获得 5.47% 的反应,占订阅者总量。
- 帖子覆盖: 每篇帖子平均可获得 1 204 次浏览,首日通常累积 717 次浏览。
- 互动与反馈: 受众积极参与,单帖平均反应数为 3。
- 主题关注点: 内容集中在 ставь, модуль, строка, docker, alice 等核心主题上。
📝 描述与内容策略
作者将该频道定位为表达主观观点的平台:
“Cайт: easyoffer.ru
Реклама: @easyoffer_adv
ВП: @easyoffer_vp
Тесты t.me/+20tRfhrwPpM4NDQy
Задачи t.me/+nsl4meWmhfQwNDVi
Вакансии t.me/+cXGKkrOY2-w3ZTky”
凭借高频更新(最新数据采集于 13 六月, 2026),频道始终保持新鲜度与高覆盖。分析显示受众积极互动,使其成为 技术与应用 类别中的关键影响点。
13 104
订阅者
-324 小时
-157 天
-5730 天
帖子存档
13 104
❓ Что такое Middleware ?
Спросят с вероятностью 20%
Middleware — это механизм слоёв обработки запросов и ответов в веб-приложении. Эти слои выполняются на разных этапах обработки запроса: некоторые мидлвари вызываются до того, как запрос достигнет представления (view), а другие — после формирования ответа представлением, но до того, как этот ответ будет отправлен клиенту. Middleware в Django позволяет глобально изменять запросы входящие в ваше приложение или ответы из него, применять аутентификацию, сессии, кеширование и многое другое.
Django поставляется с набором встроенных middleware, каждый из которых выполняет свою специфическую задачу. Ниже перечислены некоторые из наиболее часто используемых встроенных middleware и их функции:
1️⃣ SecurityMiddleware - Обеспечивает выполнение различных мер безопасности для защиты приложения, таких как предотвращение заголовка X-Frame-Options, реализация HSTS (HTTP Strict Transport Security) и т.д.
2️⃣ SessionMiddleware - Управляет сессиями через запросы. Это позволяет сохранять информацию о сессиях пользователей между различными запросами.
3️⃣ CommonMiddleware - Предоставляет различные функции, такие как управление перенаправлением URL с "www" на без "www", управление заканчивающимся слешем в URL и отправку заголовков X-Content-Type-Options: nosniff.
4️⃣ CsrfViewMiddleware - Предотвращает атаки межсайтовой подделки запроса (CSRF) путём добавления токена CSRF в запросы, которые изменяют данные, защищая таким образом ваше приложение.
5️⃣ AuthenticationMiddleware - Ассоциирует пользователей с запросами используя сессии, что позволяет использовать request.user.
6️⃣ MessageMiddleware - Позволяет временно сохранять сообщения в запросе и выводить их пользователю. Это может быть полезно для отображения уведомлений об успехе, предупреждениях или ошибках после выполнения действий.
7️⃣ XFrameOptionsMiddleware - Защищает ваше приложение от кликовджекинга, устанавливая заголовок X-Frame-Options для всех ответов, которые содержат HTML.
Важно отметить, что порядок middleware в настройках
MIDDLEWARE в settings.py имеет значение, поскольку они обрабатываются в порядке, указанном в этом списке, сначала при обработке входящего запроса и в обратном порядке при обработке ответа.
Middleware — это мощный инструмент, который позволяет глобально влиять на процесс обработки запросов и ответов в вашем веб-приложении, добавляя важные функции безопасности, управления сессиями, аутентификации и многие другие возможности.
➡ Примеры ответов
➡ Список всех вопросов на Python Developer13 104
❓ Что такое миксин ?
Спросят с вероятностью 23%
Миксин (Mixin) – это класс, предназначенный для предоставления определённых методов для использования другими классами, без необходимости становиться родительским классом для этих классов. Главная цель миксина - реализация функциональности, которую можно легко подключить к другому классу. Миксины позволяют разработчикам использовать композицию для добавления функций в классы вместо наследования, что делает структуру кода гибче и модульнее.
Применение миксинов удобно, когда одна и та же функциональность нужна в разных классах, но эти классы не должны быть связаны отношениями наследования. Таким образом, миксины позволяют избежать дублирования кода и упростить его поддержку.
Пример использования миксина:
class JsonMixin:
def to_json(self):
import json
return json.dumps(self.__dict__)
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
class PersonJson(JsonMixin, Person): # Использование миксина для добавления функциональности сериализации в JSON
pass
p = PersonJson('Иван', 25)
print(p.to_json()) # Выведет строку в формате JSON, представляющую объект PersonJson
В этом примере JsonMixin предоставляет метод to_json, который может сериализовать объекты класса в JSON. Класс PersonJson наследует этот метод благодаря множественному наследованию, где JsonMixin используется для добавления функциональности сериализации к классу Person, не изменяя его исходный код.
Использование миксинов делает код более читаемым и легко поддерживаемым, так как оно позволяет разработчикам комбинировать и переиспользовать функциональности между различными классами без изменения их иерархии наследования.
–––
Миксин - это способ добавления функциональности к классам через множественное наследование, без необходимости изменять их иерархию. Это позволяет сделать код более модульным и легким для поддержки.
➡ Примеры ответов
➡ Список всех вопросов на Python Developer13 104
❓ Что такое MRO ?
Спросят с вероятностью 23%
MRO (Method Resolution Order) — это порядок, в котором Python ищет методы и атрибуты класса при их вызове. Этот порядок особенно важен в контексте множественного наследования, когда класс наследует поведение и атрибуты от нескольких родительских классов, и нужно четко определить, откуда именно брать эти атрибуты и методы в случае их совпадения.
Зачем нужен MRO ?
MRO помогает избежать проблемы алмаза (diamond problem), которая возникает, когда два родительских класса наследуют от одного и того же базового класса, а затем эти классы сливаются в один дочерний класс. Без четко определенного MRO Python не смог бы автоматически решить, в каком порядке следует искать методы и атрибуты среди родительских классов.
Как работает MRO ?
Python использует алгоритм C3 Linearization для определения MRO. Этот алгоритм гарантирует, что порядок разрешения методов учитывает следующие условия:
✅ Подкласс всегда имеет приоритет перед родительским классом.
✅ Порядок родительских классов сохраняется.
✅ Если класс наследует от нескольких классов, порядок, указанный при наследовании, определяет приоритетность.
Можно узнать MRO любого класса, используя атрибут
__mro__ или метод mro() у самого класса.
Пример:
class Base:
pass
class A(Base):
pass
class B(Base):
pass
class C(A, B):
pass
print(C.mro())
В этом примере порядок разрешения методов для класса C будет следующим: C, A, B, Base, object. Это означает, что если метод вызывается для экземпляра класса C, интерпретатор Python будет искать его сначала в C, затем в A, после в B, затем в Base и, наконец, в встроенном объекте object, который является базовым для всех классов.
MRO определяет порядок, в котором интерпретатор будет искать методы и атрибуты при их вызове в контексте множественного наследования. Это обеспечивает предсказуемость и избегает конфликтов при наследовании от нескольких классов.
➡ Примеры ответов
➡ Список всех вопросов на Python Developer13 104
❓ Что такое лямбда-функции ?
Спросят с вероятностью 23%
Лямбда-функции — это небольшие анонимные функции, состоящие из одного выражения, результат которого является значением функции. Они определяются с помощью ключевого слова
lambda, за которым следуют аргументы функции, двоеточие и выражение, значение которого функция должна вернуть.
Зачем нужны лямбда-функции?
Лямбда-функции часто используются в тех случаях, когда необходима простая функция для кратковременного использования, и нет смысла определять полноценную функцию с помощью def. Это может быть полезно для сортировки или фильтрации данных, а также в качестве аргумента для функций высшего порядка, таких как map(), filter() и reduce().
Пример использования:
# Определение лямбда-функции для вычисления квадрата числа
square = lambda x: x * x
# Использование лямбда-функции
print(square(5)) # Выведет 25
# Лямбда-функция в качестве аргумента функции map()
numbers = [1, 2, 3, 4]
squared_numbers = list(map(lambda x: x ** 2, numbers))
print(squared_numbers) # Выведет [1, 4, 9, 16]
# Лямбда-функция для фильтрации списка
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers) # Выведет [2, 4]
Лямбда-функции удобны для создания небольших функций на лету, без необходимости явно определять функцию с использованием def. Однако стоит отметить, что использование лямбда-функций может сделать код менее читаемым, если выражение становится сложным. По этой причине рекомендуется использовать лямбда-функции для простых операций и переходить к обычному определению функций с def для более сложной логики.
Вкратце: лямбда-функции — это компактный способ создания анонимных функций для выполнения простых выражений. Они особенно полезны для использования в качестве аргументов для функций, работающих с коллекциями данных.
➡ Примеры ответов
➡ Список всех вопросов на Python Developer13 104
❓ Что такое ООП ?
Спросят с вероятностью 26%
Объектно-ориентированное программирование (ООП) — это парадигма программирования, основанная на концепции "объектов", которые могут содержать данные в виде полей (атрибуты или свойства) и код в виде процедур (методы).
Зачем нужно ООП?
ООП используется для структурирования программы таким образом, чтобы свойства и поведения были собраны в отдельные объекты. Например, в программе для управления животными в зоопарке каждое животное может быть объектом с атрибутами, такими как имя, возраст и вид, а также методами, такими как кормление или игра. Это делает программу легко понимаемой, расширяемой и поддерживаемой.
Основные концепции ООП:
1️⃣ Инкапсуляция — это сокрытие деталей реализации и объединение данных и методов, работающих с этими данными, в одном классе. Это помогает защитить данные от непосредственного доступа извне и делает интерфейс работы с объектом более четким и строгим.
2️⃣ Наследование позволяет создавать новые классы на основе уже существующих, наследуя их свойства и методы. Это облегчает повторное использование кода и создание иерархий классов.
3️⃣ Полиморфизм — способность одной и той же функции или метода работать с разными типами данных. В ООП это обычно достигается за счет переопределения методов в дочерних классах.
4️⃣ Абстракция — это способ выделить набор общих характеристик объекта, исключая из рассмотрения несущественные. Это позволяет сосредоточиться на том, что объект делает, а не на том, как он это делает.
Пример кода:
class Animal:
def __init__(self, name, age):
self.name = name
self.age = age
def speak(self):
return "Звуки, которые издает животное"
class Dog(Animal): # Наследование класса Animal
def speak(self): # Переопределение метода speak
return "Гав"
# Создание объекта класса Dog
my_dog = Dog("Бобик", 5)
print(my_dog.speak()) # Вывод: Гав
В этом примере Animal является базовым классом с методом speak, а Dog — производным классом, который наследует свойства Animal и переопределяет метод speak. Это демонстрирует наследование и полиморфизм.
Вкратце: ООП — это метод организации программы с помощью объектов, которые объединяют данные и методы работы с этими данными. Это делает программы более понятными, удобными для разработки и поддержки. Основные принципы ООП включают инкапсуляцию, наследование, полиморфизм и абстракцию.
➡ Примеры ответов
➡ Список всех вопросов на Python Developer13 104
❓ Что может быть ключом в словаре ?
Спросят с вероятностью 26%
Словарь — это коллекция элементов, которая хранит данные в парах ключ-значение. Ключ в словаре может быть любым неизменяемым типом данных: числами, строками, кортежами. Главное требование к ключу — он должен быть уникальным в рамках одного словаря и хешируемым.
Хешируемость означает, что объект должен иметь хеш-значение, которое не изменяется на протяжении всего времени существования объекта. Это необходимо для того, чтобы Python мог быстро находить значение по ключу. Если бы ключи были изменяемыми, их хеш-значения могли бы измениться, и это привело бы к тому, что значение по ключу стало бы невозможно найти.
Примеры ключей в словаре:
Строки - самый часто используемый тип ключа. Строки удобны, поскольку они легко читаемы и понятны.
my_dict = {"name": "Alice", "age": 25}
Числа - также могут использоваться в качестве ключей. Это могут быть целые числа или числа с плавающей точкой.
my_dict = {1: "one", 2: "two"}
Кортежи - могут быть ключами, если все их элементы неизменяемы. Это делает их полезными для комплексных ключей.
my_dict = {(1, 2): "point", (3, 4): "another point"}
Изменяемые типы данных, такие как списки или другие словари, не могут быть ключами, потому что они не хешируемы.
Ключи в словаре Python — это неизменяемые и хешируемые объекты, такие как строки, числа или кортежи. Это обеспечивает эффективный доступ и хранение данных. В качестве ключей используются данные, которые легко идентифицировать и которые не изменяются во время работы программы.
➡ Примеры ответов
➡ Список всех вопросов на Python Developer13 104
❓ Что такое полиморфизм ?
Спросят с вероятностью 26%
Полиморфизм - это принцип ООП, согласно которому можно использовать один и тот же интерфейс для различных базовых форм данных или типов. Слово "полиморфизм" происходит от греческих слов "поли" (много) и "морфе" (форма). Этот принцип позволяет объектам использовать методы производного класса, даже если они изначально определены в базовом классе.
Пример:
class Bird:
def intro(self):
print("В мире много разных птиц.")
def flight(self):
print("Большинство птиц умеют летать, но некоторые не умеют.")
class Sparrow(Bird):
def flight(self):
print("Воробьи могут летать.")
class Ostrich(Bird):
def flight(self):
print("Страусы не умеют летать.")
В этом примере у нас есть базовый класс Bird и два его подкласса Sparrow и Ostrich. Каждый подкласс переопределяет метод flight. Здесь полиморфизм проявляется в том, что метод flight, определенный в базовом классе, используется подклассами, но каждый подкласс дает свою реализацию этому методу.
Полиморфизм важен, потому что он позволяет писать более гибкий и масштабируемый код. Благодаря ему можно создавать функции, которые могут работать с любыми классами, наследующими от базового класса, что упрощает расширение и модификацию программы.
В двух словах, полиморфизм - это когда один и тот же метод можно использовать для разных объектов.
➡ Примеры ответов
➡ Список всех вопросов на Python Developer13 104
❓ Что такое итератор ?
Спросят с вероятностью 30%
Итератор – это объект в Python, который предоставляет последовательный доступ к элементам коллекции или последовательности данных. Итераторы используются для обхода элементов в структурах данных, таких как списки, кортежи, строки, словари и многие другие.
Итераторы обладают двумя основными методами:
__iter__(): Возвращает сам итератор. Этот метод позволяет итератору начать итерацию заново, если это необходимо.
__next__(): Возвращает следующий элемент в последовательности данных. Если достигнут конец последовательности, метод должен возбуждать исключение StopIteration.
Вот пример итератора, который итерируется по числам от 1 до N, где N - это максимальное число, переданное в конструкторе:
class MyIterator:
def __init__(self, max_num):
self.max_num = max_num
self.current_num = 1
def __iter__(self):
return self
def __next__(self):
if self.current_num <= self.max_num:
result = self.current_num
self.current_num += 1
return result
else:
raise StopIteration
# Использование итератора
iterator = MyIterator(5)
for num in iterator:
print(num)
В этом примере MyIterator является пользовательским итератором, который генерирует числа от 1 до заданного максимального числа. При достижении максимального числа итерация завершается с возбуждением исключения StopIteration.
Итераторы могут быть использованы в циклах for, для обхода данных в последовательности, или в любой другой ситуации, когда требуется последовательный доступ к элементам коллекции без необходимости хранения всей последовательности в памяти.
Итераторы также играют важную роль в контексте генераторов. Генераторы - это специальный тип итераторов, создаваемых с использованием функций с ключевым словом yield. Генераторы позволяют генерировать значения на лету, вместо того чтобы хранить их в памяти целиком, что может быть полезно для обработки больших объемов данных или бесконечных последовательностей.
➡ Примеры ответов
➡ Список всех вопросов на Python Developer13 104
❓ Какие знаешь принципы ООП?
Спросят с вероятностью 30%
Принципы объектно-ориентированного программирования (ООП) – это фундаментальные концепции, лежащие в основе этого стиля программирования. Они помогают программистам создавать гибкий и масштабируемый код. Всего 4 принципа:
1. Инкапсуляция
2. Наследование
3. Полиморфизм
4. Абстракция
1️⃣ Инкапсуляция
Это принцип, согласно которому детали реализации класса скрыты от внешнего использования. Это позволяет изменять внутреннее устройство класса без влияния на другие части программы. В Python инкапсуляция достигается за счет использования публичных, защищенных (
_имя) и приватных (__имя) методов и атрибутов.
class Account:
def __init__(self):
self.__balance = 0 # Приватный атрибут
def deposit(self, amount):
if amount > 0:
self.__balance += amount
def get_balance(self):
return self.__balance
Здесь детали реализации учета баланса скрыты от пользователя.
2️⃣ Наследование
Позволяет создавать новые классы на основе уже существующих, наследуя их свойства и методы. Это облегчает повторное использование кода и упрощает расширение функциональности.
class SavingsAccount(Account): # Наследование от класса Account
def __init__(self):
super().__init__()
self.interest_rate = 0.05
def add_interest(self):
self.deposit(self.get_balance() * self.interest_rate)
Класс SavingsAccount расширяет функционал Account, добавляя начисление процентов.
3️⃣ Полиморфизм
Это способность объектов использовать методы производных классов, даже если они вызываются с точки зрения их базового класса. Это позволяет одному интерфейсу управлять разными типами объектов.
for account in [Account(), SavingsAccount()]:
account.deposit(100)
print(account.get_balance())
Здесь deposit действует по-разному в зависимости от типа аккаунта.
4️⃣ Абстракция
Это выделение ключевых характеристик объекта и исключение нерелевантных. Это помогает сосредоточиться на том, "что делает" объект, а не на том, "как он это делает".
from abc import ABC, abstractmethod
class Shape(ABC):
@abstractmethod
def area(self):
pass
@abstractmethod
def perimeter(self):
pass
Shape является абстрактным классом, определяющим интерфейс для всех форм.
––––
ООП основано на четырех принципах: инкапсуляции (скрытие деталей реализации), наследовании (создание новых классов на основе существующих), полиморфизме (один интерфейс для разных типов объектов) и абстракции (выделение ключевых характеристик). Эти принципы помогают создавать структурированный и управляемый код.
➡ Примеры ответов
➡ Список всех вопросов на Python Developer13 104
❓ Что такое индексы и как они работают?
Спросят с вероятностью 30%
Индексы – это специальные структуры данных, которые используются для ускорения операций выборки (retrieval) и поиска данных в таблице. Они подобны индексам в книге: вместо того, чтобы перелистывать всю книгу (или всю таблицу данных) для поиска нужной информации, вы можете использовать индекс для быстрого нахождения необходимых данных.
Зачем нужны
Индексы существенно ускоряют поиск и выборку данных, особенно в больших таблицах. Без индексов база данных должна была бы осуществлять "полный сканирование таблицы" (full table scan), что очень ресурсоемко и медленно, особенно для больших объемов данных. Однако стоит учитывать, что создание и поддержание индексов также требует дополнительных ресурсов, включая место на диске и время на обновление индекса при изменении данных в таблице.
Как работают индексы
Существуют различные типы индексов, и они могут быть реализованы по-разному в зависимости от системы управления базами данных (СУБД), но обычно они используют структуры данных, такие как B-деревья или хеш-таблицы, для эффективного хранения и поиска данных.
Например, если вы создаете индекс для столбца "Фамилия" в таблице с записями сотрудников, СУБД создаст структуру данных (например, B-дерево), которая позволит быстро находить записи по значению фамилии, не перебирая каждую запись в таблице.
CREATE INDEX idx_lastname ON employees (lastname);
Эта SQL-команда создает индекс idx_lastname для столбца lastname в таблице employees. После создания этого индекса запросы, которые ищут сотрудников по фамилии, будут выполняться значительно быстрее.
———
Индексы – это структуры, которые ускоряют поиск данных в таблицах, работая подобно индексам в книге. Они особенно полезны для больших таблиц и сложных запросов.
➡ Примеры ответов
➡ Список всех вопросов на Python Developer13 104
❓ Что такое генератор ?
Спросят с вероятностью 33%
Генератор в Python – это специальный тип функций, который позволяет вам возвращать значение и позже продолжить выполнение функции с того места, где она была остановлена. Это достигается с помощью ключевого слова
yield.
Главное отличие генератора от обычной функции заключается в том, что генератор возвращает итерируемый объект, через который можно пройти только один раз. Это позволяет эффективно работать с данными, не загружая полностью их в память. Это особенно полезно, когда вам нужно работать с большими объемами данных или когда вы не знаете заранее, сколько элементов вам понадобится.
Пример использования генератора:
def count_up_to(max):
count = 1
while count <= max:
yield count
count += 1
counter = count_up_to(5)
for num in counter:
print(num)
В этом примере функция count_up_to является генератором. Когда вы вызываете её, она не выполняет свой код сразу. Вместо этого, она возвращает итерируемый объект. Когда вы итерируетесь через этот объект (например, используя цикл for), код внутри функции выполняется до первого yield. Значение, которое следует за yield, возвращается в цикл. При следующей итерации выполнение функции возобновляется сразу после yield и продолжается до следующего yield.
Использование генераторов позволяет сэкономить ресурсы, так как значения генерируются по мере необходимости, а не хранятся в памяти.
———
Генератор в Python - это инструмент для создания итератора, который можно перебирать (итерировать) один раз. Генераторы используются для более эффективной работы с данными, позволяя не загружать все данные в память сразу.
➡ Примеры ответов
➡ Список всех вопросов на Python Developer13 104
❓ Какие есть типы данных в Python ?
Cпросят с вероятностью 83%
Типы данных делят на 2 группы: изменяемые и не изменяемые.
Изменяемые (mutable)
Списки (list): Упорядоченные коллекции, которые могут содержать элементы разных типов. Пример: [1, "apple", 3.14]. Списки часто используются для хранения и последовательного доступа к элементам.
e = [1, 2, 3, 4, 5]Словари (dict): Коллекции пар ключ-значение. Пример: {"name": "Alice", "age": 25}. Словари удобны для представления объектов с атрибутами. Ключом в словаре может быть значение с не изменяемым типом данных (int, float, str, tuple, bool, frozenset и т.д.)
g = {"name": "Alice", "age": 25}
Множества (set): Неупорядоченные коллекции уникальных элементов. Пример: {1, 2, 3}. Используются для удаления дубликатов и выполнения операций над множествами, таких как объединение, пересечение.
h = {1, 2, 3, 4, 5}
Байтовые массивы (bytearray): Это изменяемая последовательность целых чисел в диапазоне от 0 до 255. Они используются для работы с двоичными данными, например, при чтении файлов или сетевого взаимодействия. bytearray полезен, когда вам нужно изменять данные на уровне байтов.
ba = bytearray([50, 100, 150, 200])
Не изменяемые (immutable)
Целые числа (int): Как положительные, так и отрицательные. Например, 1, 100, -20.
a = 5Вещественные числа (float): Числа с плавающей точкой (то есть с дробной частью). Примеры: 3.14, -0.001
b = 2.5Комплексные числа (complex): Этот тип данных используется для представления комплексных чисел, которые включают в себя действительную и мнимую части. В Python комплексные числа могут быть созданы с помощью литерала j для мнимой части. Например, комплексное число 3 + 4j. Комплексные числа используются в научных и инженерных расчетах, где необходимо работать с числами, имеющими мнимую составляющую.
z = 3 + 4jДлинные целые числа (long): В старых версиях Python (2.x и ранее) существовал отдельный тип данных long для представления очень больших целых чисел. Однако в Python 3 и выше этот тип был упразднен, и теперь все целые числа (int) могут быть любой длины. Таким образом, в современном Python отдельного типа данных long не существует — все большие целые числа автоматически становятся int.
a = 12345678901234567890L # Python 2.x a = 12345678901234567890 # Python 3Строки (str): Текст, заключенный в одинарные, двойные или тройные кавычки. Например: "hello", 'world'.
c = "Hello, Python!"Булевы значения (bool): Имеют всего два значения:
True и False. Они часто используются в условиях и логических выражениях.
d = TrueКортежи (tuple): Похожи на списки, но являются неизменяемыми. Пример: (1, "apple", 3.14). Используются, когда данные не должны изменяться после их создания. Если кортеж содержит изменяемые данные, то он становится изменяемым
f = (1, 2, 3)Диапазон (range): Это неизменяемая последовательность чисел, обычно используемая в циклах for. range полезен для итерации через серии числовых значений.
for i in range(0, 10):
print(i)
NoneType: Этот тип данных имеет только одно возможное значение: None. Оно используется для обозначения отсутствия значения. Часто используется в логических операциях например if a is None:
a = NoneFrozenset: Это неизменяемый аналог set. Так как frozenset неизменяем, он может использоваться в качестве ключа в словарях.
fs = frozenset([1, 2, 3])Байты (bytes): Похожи на bytearray, но являются неизменяемыми. Они также представляют собой последовательности целых чисел от 0 до 255 и используются для работы с двоичными данными.
b = bytes([50, 100, 150, 200])➡ Примеры ответов ➡ Список всех вопросов на Python Developer
13 104
❓ Что такое контекстный менеджер ?
Вопрос спросят с вероятностью 43%
Контекстный менеджер в Python - это специальный тип объекта, который предназначен для управления контекстом в блоке кода. Основная цель контекстного менеджера - обеспечить корректное управление ресурсами, такими как файлы, сетевые соединения или блокировки в многопоточных программах. Это помогает предотвратить ошибки, такие как утечки ресурсов, и делает код более читаемым и безопасным.
Чтобы понять, как работает контекстный менеджер, рассмотрим два ключевых метода, которые он должен реализовывать:
enter и exit. Метод enter вызывается в начале блока кода, управляемого контекстным менеджером (обычно после ключевого слова with), и обычно используется для выделения ресурсов. Метод exit вызывается после окончания блока кода и обычно занимается очисткой ресурсов.
Пример контекстного менеджера, который управляет файлом:
class FileHandler:
def init(self, filename, mode):
self.filename = filename
self.mode = mode
self.file = None
def enter(self):
self.file = open(self.filename, self.mode)
return self.file
def exit(self, exc_type, exc_val, exc_tb):
if self.file:
self.file.close()
# Использование контекстного менеджера
with FileHandler('example.txt', 'w') as f:
f.write('Привет, мир!')
# После выхода из блока with файл автоматически закрывается
В этом примере FileHandler - это контекстный менеджер для работы с файлами. Когда начинается блок with, вызывается метод enter, который открывает файл. После завершения работы в блоке with автоматически вызывается метод exit, который закрывает файл. Это предотвращает ошибки, связанные с забытым закрытием файла, и делает код более надежным и читаемым.
Контекстные менеджеры широко используются в Python для управления ресурсами, их можно встретить в стандартной библиотеке (например, open для файлов), а также во многих сторонних библиотеках.
Кратко: Контекстный менеджер в Python - это способ управления ресурсами в блоке кода, обеспечивающий автоматическое выделение и освобождение ресурсов.
➡ Примеры ответов
➡ Список всех вопросов на Python Developer13 104
❓ Чем init() отличается от new() ?
Вопрос спросят с вероятностью 33%
Различие между
init() и new() заключается в их роли при создании экземпляров классов.
__init__() – это инициализатор класса. Он вызывается, когда экземпляр класса уже создан, чтобы инициализировать его начальное состояние. Метод init() не возвращает ничего и используется для установки значений атрибутов объекта.
__new__() – это конструктор класса. Он фактически создаёт экземпляр класса и вызывается перед __init__(). Это статический метод, который должен возвращать новый созданный объект, и он используется в особых случаях, например, при создании экземпляров синглтонов или при наследовании от неизменяемых типов данных, как tuple.
Пример с init()
Допустим, у нас есть класс Person, представляющий информацию о человеке. Мы используем init() для инициализации атрибутов каждого объекта этого класса.
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
# Создание экземпляра класса Person
person1 = Person("Алексей", 30)
print(f"Имя: {person1.name}, Возраст: {person1.age}")
В этом примере init() используется для установки имени и возраста для каждого объекта Person. Это самый распространенный способ инициализации атрибутов в объектно-ориентированном программировании.
Пример с new()
new() используется реже, но его можно применять в специфических сценариях, например, для создания синглтонов (одиночек).
class Singleton:
_instance = None
def new(cls):
if cls._instance is None:
print("Создание экземпляра")
cls._instance = super(Singleton, cls).new(cls)
return cls._instance
# Создание экземпляров Singleton
singleton1 = Singleton()
singleton2 = Singleton()
print(singleton1 is singleton2) # Вернет True, так как оба объекта являются одним и тем же экземпляром
Здесь new() гарантирует, что класс Singleton создает только один экземпляр. При попытке создать новый объект этого класса, new() возвращает уже существующий экземпляр, если он есть, предотвращая создание новых экземпляров.
➡ Примеры ответов
➡ Список всех вопросов на Python Developer13 104
❓ Что такое декоратор?
Вопрос спросят с вероятностью 36%
Декоратор в Python — это специальная функция, которая позволяет изменять или расширять поведение других функций или методов. Он оборачивает другую функцию (или класс) и позволяет выполнить какой-то код до или после основной функции, не изменяя её.
Основные особенности декораторов:
1️⃣ Преобразование функций: Декораторы могут изменять поведение функции, не изменяя её кода.
2️⃣ Повторное использование кода: Они позволяют использовать общий код в нескольких функциях, уменьшая дублирование.
3️⃣ Синтаксическое удобство: В Python декораторы могут быть применены к функции с использованием символа @, что делает код более читабельным и элегантным.
➡ Примеры ответов
➡ Список всех вопросов на Python Developer
现已上线!2025 年 Telegram 研究 — 年度关键洞察 
