Python | Вопросы собесов
Cайт: easyoffer.ru Реклама: @easyoffer_adv ВП: @easyoffer_vp Тесты t.me/+20tRfhrwPpM4NDQy Задачи t.me/+nsl4meWmhfQwNDVi Вакансии t.me/+cXGKkrOY2-w3ZTky
Ko'proq ko'rsatish📈 Telegram kanali Python | Вопросы собесов analitikasi
Python | Вопросы собесов (@python_easy_ru) Rus til segmentidagi kanali faol ishtirokchi. Hozirda hamjamiyat 13 101 obunachidan iborat bo'lib, Texnologiyalar & Aralashmalar toifasida 9 734-o'rinni va Rossiya mintaqasida 50 704-o'rinni egallagan.
📊 Auditoriya ko‘rsatkichlari va dinamika
невідомо sanasidan buyon loyiha tez o‘sib, 13 101 obunachiga ega bo‘ldi.
10 Iyun, 2026 dagi oxirgi ma’lumotlarga ko‘ra kanal barqaror faollikka ega. Oxirgi 30 kunda obunachilar soni -55 ga, so‘nggi 24 soatda esa 1 ga o‘zgardi va umumiy qamrov yuqori darajada qolmoqda.
- Tasdiqlash holati: Tasdiqlanmagan
- Jalb etish (ER): Auditoriya o‘rtacha 8.86% darajada jalb etiladi. Nashrdan keyingi dastlabki 24 soatda kontent odatda umumiy obunachilar sonining 5.51% ini tashkil etuvchi reaksiyalarni to‘playdi.
- Post qamrovi: Har bir post o‘rtacha 1 161 marta ko‘riladi; birinchi sutkada odatda 722 ta ko‘rish yig‘iladi.
- Reaksiyalar va o‘zaro ta’sir: Auditoriya faol: har bir postga o‘rtacha 3 ta reaksiya keladi.
- Tematik yo‘nalishlar: Kontent ставь, модуль, строка, docker, alice kabi asosiy mavzularga jamlangan.
📝 Tavsif va kontent siyosati
Muallif resursni shaxsiy fikrni ifoda etish maydoni sifatida ta’riflaydi:
“Cайт: easyoffer.ru
Реклама: @easyoffer_adv
ВП: @easyoffer_vp
Тесты t.me/+20tRfhrwPpM4NDQy
Задачи t.me/+nsl4meWmhfQwNDVi
Вакансии t.me/+cXGKkrOY2-w3ZTky”
Yuqori yangilanish chastotasi (oxirgi ma’lumot 11 Iyun, 2026 da olingan) sababli kanal doimo dolzarb va katta qamrovli bo‘lib qoladi. Analitika auditoriya kontent bilan faol hamkorlik qilishini, uni Texnologiyalar & Aralashmalar toifasidagi muhim ta’sir nuqtasiga aylantirishini ko‘rsatadi.
def process_order(order):
# Проверка наличия товара на складе
for item in order['items']:
if not warehouse_has_item(item):
raise Exception("Товара нет на складе")
# Расчет общей стоимости заказа
total_price = 0
for item in order['items']:
total_price += item['price'] * item['quantity']
# Создание записи в базе данных
save_order_to_db(order, total_price)
# Отправка уведомления клиенту
send_confirmation_email(order['customer_email'])
Эта функция выполняет несколько задач на разных уровнях абстракции: проверка наличия товара, расчет стоимости, работа с базой данных, отправка email. Это нарушает принцип SLAP.
def process_order(order):
check_items_availability(order['items'])
total_price = calculate_total_price(order['items'])
save_order(order, total_price)
notify_customer(order['customer_email'])
def check_items_availability(items):
for item in items:
if not warehouse_has_item(item):
raise Exception("Товара нет на складе")
def calculate_total_price(items):
total_price = 0
for item in items:
total_price += item['price'] * item['quantity']
return total_price
def save_order(order, total_price):
save_order_to_db(order, total_price)
def notify_customer(email):
send_confirmation_email(email)
🤔 Почему это важно?
1️⃣ Упрощение понимания кода: Легче читать и понимать, когда каждая функция выполняет только одну задачу.
2️⃣ Легкость тестирования: Отдельные функции проще тестировать.
3️⃣ Поддерживаемость: Изменения в одной части программы менее вероятно вызовут ошибки в другой.
Принцип SLAP означает, что каждая функция должна выполнять задачи только на одном уровне абстракции. Это делает код более чистым и легким для понимания.
🔥 ТОП ВОПРОСОВ С СОБЕСОВ
🔒 База собесов | 🔒 База тестовыхopen(). Эта функция возвращает объект файла, который затем можно использовать для выполнения различных операций с файлом.
Синтаксис функции open():
file_object = open(file_name, mode)
file_name: Имя файла, который вы хотите открыть.
mode: Режим, в котором вы хотите открыть файл. Основные режимы включают:
➕ 'r': чтение (по умолчанию)
➕ 'w': запись (содержимое файла будет удалено)
➕ 'a': добавление (новые данные будут добавлены в конец файла)
➕ 'b': бинарный режим (добавляется к основному режиму, например 'rb' или 'wb')
Примеры:
Чтение файла
# Открытие файла в режиме чтения
with open('example.txt', 'r') as file:
content = file.read()
print(content)
Запись в файл
# Открытие файла в режиме записи
with open('example.txt', 'w') as file:
file.write('Hello, world!')
Добавление в файл
# Открытие файла в режиме добавления
with open('example.txt', 'a') as file:
file.write('\nAppended text.')
Чтение из файла
Файловый объект предоставляет несколько методов для чтения данных:
➕ read(size=-1): Читает весь файл или size байт, если указан.
➕ readline(size=-1): Читает одну строку или size байт, если указан.
➕ 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, end='') # `end=''` чтобы избежать двойного переноса строки
Чтение файла в список строк
with open('example.txt', 'r') as file:
lines = file.readlines()
print(lines)
Запись в файл
Файловый объект также предоставляет методы для записи данных:
➕ write(string): Записывает строку в файл.
➕ writelines(lines): Записывает список строк в файл.
Примеры:
Запись строки в файл
with open('example.txt', 'w') as file:
file.write('Hello, world!')
Запись списка строк в файл
lines = ['First line\n', 'Second line\n', 'Third line\n']
with open('example.txt', 'w') as file:
file.writelines(lines)
Использование менеджеров контекста (with)
Она автоматически закрывает файл после выхода из блока with, даже если возникло исключение.
with open('example.txt', 'r') as file:
content = file.read()
print(content)
Закрытие файла
Если файл открыт без использования with, его нужно закрыть вручную с помощью метода close().
file = open('example.txt', 'r')
content = file.read()
print(content)
file.close()
Дополнительные операции с файлами
Модуль os предоставляет функции для работы с файловой системой, такие как переименование, удаление и создание директорий.
Примеры:
Переименование файла
import os
os.rename('example.txt', 'new_example.txt')
Удаление файла
import os
os.remove('new_example.txt')
Создание директории
import os
os.mkdir('new_directory')
Удаление директории
import os
os.rmdir('new_directory')
Python предоставляет богатые возможности для работы с файлами, начиная с простого чтения и записи и заканчивая сложными операциями с файловой системой. Использование менеджеров контекста (with) обеспечивает безопасное и эффективное управление файлами.
🔥 ТОП ВОПРОСОВ С СОБЕСОВ
🔒 База собесов | 🔒 База тестовыхwith, гарантировать закрытие файла можно несколькими способами, в частности, используя конструкцию try-finally или модуль contextlib.
Использование try-finally
Позволяет обеспечить закрытие файла даже в случае возникновения исключения. В блоке finally можно указать код, который должен выполниться независимо от того, было ли исключение в блоке try или нет.
file = open('example.txt', 'r')
try:
content = file.read()
print(content)
finally:
file.close()
В этом примере:
➕ Файл открывается и читается в блоке try.
➕ Независимо от того, возникло ли исключение в блоке try или нет, файл будет закрыт в блоке finally.
Использование модуля contextlib
Предоставляет утилиты для работы с контекстными менеджерами. Одной из таких утилит является функция contextlib.closing, которая может быть использована для автоматического закрытия объекта, поддерживающего метод close.
from contextlib import closing
file = open('example.txt', 'r')
with closing(file) as f:
content = f.read()
print(content)
В этом примере:
➕ Файл открывается и оборачивается в контекстный менеджер closing.
➕ Когда блок with завершается, closing автоматически закрывает файл.
Создание пользовательского контекстного менеджера
Также можно создать свой собственный контекстный менеджер с помощью класса, который реализует методы __enter__ и exit.
class FileManager:
def __init__(self, filename, mode):
self.filename = filename
self.mode = mode
def __enter__(self):
self.file = open(self.filename, self.mode)
return self.file
def __exit__(self, exc_type, exc_value, traceback):
self.file.close()
# Использование
with FileManager('example.txt', 'r') as file:
content = file.read()
print(content)
В этом примере:
➕ Класс FileManager реализует методы enter и exit.
➕ Метод enter открывает файл и возвращает его.
➕ Метод exit закрывает файл, обеспечивая его корректное закрытие.
Гарантировать закрытие файла можно несколькими способами, помимо использования конструкции with:
1️⃣ Использовать конструкцию try-finally, чтобы файл всегда закрывался независимо от возникновения исключений.
2️⃣ Использовать модуль contextlib и его утилиту closing для автоматического закрытия файла.
3️⃣ Создать пользовательский контекстный менеджер, реализовав методы enter и exit.
Эти методы обеспечивают надёжное управление ресурсами и предотвращают утечки ресурсов, которые могут возникнуть при некорректном закрытии файлов.
🔥 ТОП ВОПРОСОВ С СОБЕСОВ
🔒 База собесов | 🔒 База тестовыхunittest, который является стандартным модулем для тестирования и поставляется вместе. Другие популярные библиотеки для тестирования включают pytest и nose.
Использование модуля unittest
Предоставляет инструменты для создания и выполнения тестов. Давайте рассмотрим основные шаги для написания тестов с использованием unittest.
Основные шаги для написания тестов:
1️⃣ Создание тестового класса: Тестовый класс должен наследоваться от unittest.TestCase.
2️⃣ Написание тестовых методов: Каждый тестовый метод должен начинаться с test_.
3️⃣ Использование методов утверждений: Методы утверждений (assert) используются для проверки условий, таких как assertEqual, assertTrue, assertFalse, assertRaises и другие.
4️⃣ Запуск тестов: Запуск тестов можно осуществить с помощью командной строки или специального вызова внутри скрипта.
Примеры использования:
Допустим, у нас есть простая функция для сложения двух чисел:
# Пример функции в файле my_module.py
def add(a, b):
return a + b
Теперь мы напишем тесты для этой функции:
# Пример теста в файле test_my_module.py
import unittest
from my_module import add
class TestAddFunction(unittest.TestCase):
def test_add_integers(self):
self.assertEqual(add(1, 2), 3)
self.assertEqual(add(-1, 1), 0)
self.assertEqual(add(-1, -1), -2)
def test_add_floats(self):
self.assertAlmostEqual(add(1.1, 2.2), 3.3)
def test_add_strings(self):
self.assertEqual(add('a', 'b'), 'ab')
if __name__ == '__main__':
unittest.main()
Запуск тестов
Тесты можно запускать разными способами. Вот несколько способов:
1️⃣ Запуск из командной строки:
python -m unittest test_my_module.py
2️⃣ Запуск тестов из файла:
Просто запустите файл test_my_module.py как обычный Python-скрипт.
python test_my_module.py
Использование pytest
Это мощная библиотека для тестирования, которая упрощает написание и выполнение тестов. Она поддерживает функциональные и модульные тесты и имеет лаконичный синтаксис.
# Пример функции в файле my_module.py
def add(a, b):
return a + b
Запуск тестов с pytest
Убедитесь, что pytest установлен. Вы можете установить его с помощью pip:
pip install pytest
Запуск тестов:
pytest test_my_module.py
Преимущества:
1️⃣ Простой и лаконичный синтаксис: Тесты пишутся проще и читаются легче.
2️⃣ Богатый функционал: Поддержка фикстур, параметризация тестов, расширенные возможности для ассертов.
3️⃣ Множество плагинов: Расширяемость за счет множества доступных плагинов.
Написание тестов — важная часть разработки программного обеспечения, которая помогает обнаруживать ошибки и обеспечивать качество кода. Для тестирования можно использовать стандартный модуль unittest или более мощную библиотеку pytest. Основные шаги включают создание тестовых классов, написание тестовых методов, использование утверждений и запуск тестов. Выбор инструмента зависит от ваших предпочтений и требований проекта, но оба подхода обеспечивают эффективное тестирование вашего кода.
🔥 ТОП ВОПРОСОВ С СОБЕСОВ
🔒 База собесов | 🔒 База тестовыхmath_operations.py с функцией add:
# math_operations.py
def add(a, b):
return a + b
Monkey Patching
Изменить функцию add, чтобы она вместо сложения выполняла вычитание. Мы можем сделать это с помощью monkey patching:
import math_operations
# Оригинальная функция
print(math_operations.add(5, 3)) # Вывод: 8
# Monkey patching
def new_add(a, b):
return a - b
math_operations.add = new_add
# После monkey patching
print(math_operations.add(5, 3)) # Вывод: 2
Пример с использованием стандартной библиотеки
Где изменим поведение метода str.upper:
# Оригинальный метод
print("hello".upper()) # Вывод: HELLO
# Monkey patching
def new_upper(self):
return self.lower()
str.upper = new_upper
# После monkey patching
print("hello".upper()) # Вывод: hello
Применение Monkey Patching в тестировании
Часто используется в тестировании для имитации поведения зависимостей или для замены реальных объектов на фиктивные (mock) объекты.
import unittest
from unittest.mock import patch
class ExternalService:
def fetch_data(self):
# Представим, что эта функция делает запрос к внешнему API
return "Real data"
def process_data():
service = ExternalService()
return service.fetch_data()
class TestProcessData(unittest.TestCase):
@patch('__main__.ExternalService.fetch_data', return_value="Mock data")
def test_process_data(self, mock_fetch_data):
result = process_data()
self.assertEqual(result, "Mock data")
if __name__ == '__main__':
unittest.main()
В этом примере:
➕ Используется unittest.mock.patch для замены метода fetch_data класса ExternalService на фиктивный метод, возвращающий "Mock data".
➕ Тест проверяет, что функция process_data возвращает подделанные данные вместо реальных данных.
Предостережения при его использовании
Хотя monkey patching может быть полезным, оно также может привести к проблемам, если использовать его неправильно:
1️⃣ Проблемы с отладкой: Динамическое изменение кода может затруднить отладку и понимание программы.
2️⃣ Неожиданное поведение: Изменение поведения стандартных библиотек или модулей может привести к неожиданным результатам в других частях программы.
3️⃣ Нарушение инкапсуляции: Monkey patching нарушает принцип инкапсуляции, так как изменения вносятся в код извне.
Monkey patching — мощная техника, которая позволяет динамически изменять поведение модулей и библиотек во время выполнения программы. Она может быть полезна для исправления ошибок, добавления функциональности или создания фиктивных объектов для тестирования. Однако использовать monkey patching следует осторожно, чтобы избежать проблем с отладкой и неожиданным поведением программы.
🔥 ТОП ВОПРОСОВ С СОБЕСОВ
🔒 База собесов | 🔒 База тестовых
Endi mavjud! Telegram Tadqiqoti 2025 — yilning asosiy insaytlari 
