Python | Вопросы собесов
Сайт: https://easyoffer.ru/ Все каналы: t.me/+xGeAw6ckJ4liYzQy Контакт для рекламы: @sendme_ads
Mostrar más📈 Análisis del canal de Telegram Python | Вопросы собесов
El canal Python | Вопросы собесов (@python_easy_ru) en el segmento lingüístico de Ruso es un actor destacado. Actualmente la comunidad reúne a 12 631 suscriptores, ocupando la posición 9 915 en la categoría Tecnologías y Aplicaciones y el puesto 51 035 en la región Rusia.
📊 Métricas de audiencia y dinámica
Desde su creación el невідомо, el proyecto ha mostrado un crecimiento acelerado, reuniendo a 12 631 suscriptores.
Según los últimos datos del 16 octubre, 2026, el canal mantiene una actividad estable. En los últimos 30 días la variación de miembros fue de -115, y en las últimas 24 horas de -6, conservando un alto alcance.
- Estado de verificación: No verificado
- Tasa de interacción (ER): El promedio de interacción de la audiencia es 6.29%. Durante las primeras 24 horas tras publicar, el contenido suele obtener 4.30% de reacciones respecto al total de suscriptores.
- Alcance de las publicaciones: Cada publicación recibe en promedio 794 visualizaciones. En el primer día suele acumular 543 visualizaciones.
- Reacciones e interacción: La audiencia responde de forma activa: el promedio de reacciones por publicación es 2.
- Intereses temáticos: El contenido se centra en temas clave como ставь, модуль, строка, docker, alice.
📝 Descripción y política de contenido
El autor describe el recurso como un espacio para expresar opiniones subjetivas:
“Сайт: https://easyoffer.ru/
Все каналы: t.me/+xGeAw6ckJ4liYzQy
Контакт для рекламы: @sendme_ads”
Gracias a la alta frecuencia de actualizaciones (últimos datos recibidos el 17 octubre, 2026), el canal mantiene la vigencia y un amplio alcance. La analítica demuestra que la audiencia interactúa activamente con el contenido, lo que lo convierte en un punto de referencia dentro de la categoría Tecnologías y Aplicaciones.
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 следует осторожно, чтобы избежать проблем с отладкой и неожиданным поведением программы.
🔥 ТОП ВОПРОСОВ С СОБЕСОВ
🔒 База собесов | 🔒 База тестовых
import unittest
class TestMathOperations(unittest.TestCase):
def test_add(self):
self.assertEqual(1 + 1, 2)
if __name__ == '__main__':
unittest.main()
2️⃣ doctest
➕ Позволяет писать тесты прямо в строках документации (docstrings) кода.
➕ Удобен для проверки примеров использования функций.
def add(a, b):
"""
Возвращает сумму a и b.
>>> add(1, 2)
3
>>> add(-1, 1)
0
"""
return a + b
if name == '__main__':
import doctest
doctest.testmod()
Внешние библиотеки
1️⃣ pytest
➕ Одна из самых популярных библиотек для тестирования в Python.
➕ Поддерживает простой и лаконичный синтаксис тестов.
➕ Поддерживает фикстуры, параметризацию тестов, плагины и многое другое.
def add(a, b):
return a + b
def test_add():
assert add(1, 2) == 3
assert add(-1, 1) == 0
if name == '__main__':
import pytest
pytest.main()
2️⃣ nose2
➕ Наследник библиотеки nose.
➕ Совместим с unittest и расширяет его возможности.
➕ Поддерживает плагины и расширяемость.
import unittest
class TestMathOperations(unittest.TestCase):
def test_add(self):
self.assertEqual(1 + 1, 2)
if name == '__main__':
import nose2
nose2.main()
3️⃣ hypothesis
➕ Библиотека для проперти-бейсд тестирования (property-based testing).
➕ Генерирует случайные данные для тестов и находит краевые случаи.
from hypothesis import given
from hypothesis.strategies import integers
def add(a, b):
return a + b
@given(integers(), integers())
def test_add(x, y):
assert add(x, y) == x + y
if name == '__main__':
import pytest
pytest.main()
4️⃣ mock (unittest.mock)
➕ Библиотека для создания фиктивных объектов и имитации поведения зависимостей.
➕ Включена в стандартную библиотеку Python начиная с версии 3.3 как unittest.mock.
import unittest
from unittest.mock import patch
def fetch_data():
# Представим, что эта функция делает запрос к внешнему API
return "Real data"
class TestFetchData(unittest.TestCase):
@patch('main.fetch_data', return_value="Mock data")
def test_fetch_data(self, mock_fetch):
result = fetch_data()
self.assertEqual(result, "Mock data")
if:
== 'main':
unittest.main()
5️⃣ tox
➕ Инструмент для автоматизации тестирования в различных средах.
➕ Полезен для тестирования кода на разных версиях Python и с разными зависимостями.
[tox]
envlist = py36, py37, py38
[testenv]
deps = pytest
commands = pytest
6️⃣ coverage
➕ Инструмент для измерения покрытия кода тестами.
➕ Генерирует отчеты, показывающие, какие части кода были протестированы, а какие нет.
coverage run -m pytest
coverage report
coverage html # Создает отчет в формате HTML
Выбор инструмента для тестирования зависит от ваших потребностей и предпочтений. Стандартные модули, такие как unittest и doctest, предоставляют базовые возможности для тестирования, в то время как внешние библиотеки, такие как pytest, nose2 и hypothesis, предлагают более мощные и гибкие инструменты для написания и выполнения тестов. Использование библиотек для измерения покрытия кода, таких как coverage, помогает убедиться, что ваш код полностью протестирован.
🔥 ТОП ВОПРОСОВ С СОБЕСОВ
🔒 База собесов | 🔒 База тестовыхunittest
Он является встроенным и предоставляет богатые возможности для написания и выполнения юнит-тестов.
Пример кода для юнит-тестирования:
Предположим, у нас есть модуль math_operations.py с функцией add:
# math_operations.py
def add(a, b):
return a + b
Теперь тест для этой функции:
# test_math_operations.py
import unittest
from math_operations import add
class TestMathOperations(unittest.TestCase):
def test_add(self):
self.assertEqual(add(1, 2), 3)
self.assertEqual(add(-1, 1), 0)
self.assertEqual(add(-1, -1), -2)
if __name__ == '__main__':
unittest.main()
Запуск тестов
Для него можно выполнить скрипт test_math_operations.py:
python test_math_operations.py
Или использовать команду unittest из командной строки:
python -m unittest test_math_operations.py
Использование pytest для юнит-тестирования
Предлагает более лаконичный и мощный подход к юнит-тестированию.
# test_math_operations.py
from math_operations import add
def test_add():
assert add(1, 2) == 3
assert add(-1, 1) == 0
assert add(-1, -1) == -2
Запуск тестов с pytest
Убедитесь, что он установлен. Вы можете установить его с помощью pip:
pip install pytest
Запуск тестов:
pytest test_math_operations.py
Юнит-тестирование — это важный метод тестирования, который помогает обеспечивать качество и надежность кода, проверяя отдельные модули или компоненты программы. Использование таких инструментов, как unittest и pytest, позволяет автоматизировать процесс тестирования, выявлять ошибки на ранних стадиях разработки и уверенно вносить изменения в код.
🔥 ТОП ВОПРОСОВ С СОБЕСОВ
🔒 База собесов | 🔒 База тестовых