Python | Вопросы собесов
Сайт: https://easyoffer.ru/ Все каналы: t.me/+xGeAw6ckJ4liYzQy Контакт для рекламы: @sendme_ads
Ko'proq ko'rsatish📈 Telegram kanali Python | Вопросы собесов analitikasi
Python | Вопросы собесов (@python_easy_ru) Rus til segmentidagi kanali faol ishtirokchi. Hozirda hamjamiyat 12 635 obunachidan iborat bo'lib, Texnologiyalar & Aralashmalar toifasida 9 918-o'rinni va Rossiya mintaqasida 51 142-o'rinni egallagan.
📊 Auditoriya ko‘rsatkichlari va dinamika
невідомо sanasidan buyon loyiha tez o‘sib, 12 635 obunachiga ega bo‘ldi.
14 Oktabr, 2026 dagi oxirgi ma’lumotlarga ko‘ra kanal barqaror faollikka ega. Oxirgi 30 kunda obunachilar soni -107 ga, so‘nggi 24 soatda esa 0 ga o‘zgardi va umumiy qamrov yuqori darajada qolmoqda.
- Tasdiqlash holati: Tasdiqlanmagan
- Jalb etish (ER): Auditoriya o‘rtacha 6.11% darajada jalb etiladi. Nashrdan keyingi dastlabki 24 soatda kontent odatda umumiy obunachilar sonining 4.23% ini tashkil etuvchi reaksiyalarni to‘playdi.
- Post qamrovi: Har bir post o‘rtacha 772 marta ko‘riladi; birinchi sutkada odatda 534 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:
“Сайт: https://easyoffer.ru/
Все каналы: t.me/+xGeAw6ckJ4liYzQy
Контакт для рекламы: @sendme_ads”
Yuqori yangilanish chastotasi (oxirgi ma’lumot 15 Oktabr, 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.
environ и start_response.
🟠`environ`
Словарь, содержащий все данные о запросе, такие как заголовки, параметры и другие метаданные.
🟠`start_response`
Функция, которую приложение вызывает для начала формирования ответа. Она принимает статус ответа и заголовки.
def application(environ, start_response):
status = '200 OK'
headers = [('Content-Type', 'text/plain')]
start_response(status, headers)
return [b"Hello, World!"]
# Запуск приложения с использованием встроенного WSGI-сервера wsgiref
if __name__ == "__main__":
from wsgiref.simple_server import make_server
server = make_server('localhost', 8051, application)
print("Serving on http://localhost:8051...")
server.serve_forever()
🚩Как использовать WSGI с фреймворками:
Современные Python веб-фреймворки, такие как Django и Flask, автоматически поддерживают WSGI. Это позволяет легко развертывать приложения, используя WSGI-серверы.
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return "Hello, World!"
if __name__ == "__main__":
app.run()
Для развертывания этого приложения с использованием WSGI-сервера, например, Gunicorn, можно выполнить команду. Где myapp — это имя файла без расширения .py, а app — это объект приложения Flask.
gunicorn myapp:app
Ставь 👍 и забирай 📚 Базу знаний<form>
<input type="text" name="username" required minlength="3">
<input type="email" name="email" required>
<input type="submit">
</form>
Пример JavaScript валидации
document.querySelector('form').addEventListener('submit', function(event) {
const username = document.querySelector('input[name="username"]').value;
if (username.length < 3) {
alert('Username must be at least 3 characters long.');
event.preventDefault();
}
});
🟠Серверная валидация (Server-side Validation)
После получения данных от клиента. Используются встроенные или сторонние библиотеки и фреймворки. Надежная защита, обязательна даже при наличии клиентской валидации. Добавляет нагрузку на сервер, может увеличить время отклика.
from django import forms
class UserForm(forms.Form):
username = forms.CharField(min_length=3, max_length=100)
email = forms.EmailField()
def my_view(request):
if request.method == 'POST':
form = UserForm(request.POST)
if form.is_valid():
# Обработка данных
pass
else:
# Обработка ошибок
pass
else:
form = UserForm()
return render(request, 'my_template.html', {'form': form})
Пример в Flask
from flask import Flask, request, render_template_string
from wtforms import Form, StringField, validators
app = Flask(__name__)
class UserForm(Form):
username = StringField('Username', [validators.Length(min=3, max=100)])
email = StringField('Email', [validators.Email()])
@app.route('/', methods=['GET', 'POST'])
def my_view():
form = UserForm(request.form)
if request.method == 'POST' and form.validate():
# Обработка данных
pass
return render_template_string('<form method="POST">{{ form.csrf_token }}{{ form.username }}{{ form.email }}<input type="submit"></form>', form=form)
🟠Валидация на уровне базы данных (Database Validation)
При сохранении данных в базу данных. Используются ограничения базы данных (constraints) и триггеры. Гарантия целостности данных на уровне хранения. Может вызвать ошибки, если данные уже были приняты сервером, но не прошли валидацию на уровне БД.
Пример ограничения в SQL
CREATE TABLE users (
id SERIAL PRIMARY KEY,
username VARCHAR(100) NOT NULL CHECK (LENGTH(username) >= 3),
email VARCHAR(100) NOT NULL UNIQUE
);
Ставь 👍 и забирай 📚 Базу знанийHttpResponse, JsonResponse и т.д. В Flask это может быть объект Response или просто строка, которая будет конвертирована в ответ.
from django.http import HttpResponse
def my_view(request):
data = "Hello, World!"
return HttpResponse(data)
Пример в Flask
from flask import Flask, Response
app = Flask(__name__)
@app.route('/')
def my_view():
return Response("Hello, World!")
2⃣Обработка промежуточными слоями (Middleware)
После того как вьюха сформировала ответ, он проходит через цепочку промежуточных слоев (middleware). Middleware могут модифицировать объект ответа, добавлять заголовки, обрабатывать ошибки и т.д. Примеры обработки включают логирование, сжатие контента, обработку сессий и т.д.
class SimpleMiddleware:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
response = self.get_response(request)
response['X-Custom-Header'] = 'My Custom Header'
return response
3⃣Обработка сервером и отправка ответа
После прохождения всех промежуточных слоев ответ передается веб-серверу. Веб-сервер, такой как Nginx или Apache, отправляет сформированный ответ обратно клиенту (например, браузеру). Сервер обрабатывает низкоуровневые детали HTTP-протокола, такие как установка соединения, обработка заголовков и передача данных.
Ставь 👍 и забирай 📚 Базу знаний
# Пример извлеченных данных для отпечатка пальца
# Координаты минуций и углы наклона (в реальных случаях извлекаются автоматически)
fingerprint_data_1 = [
{"x": 100, "y": 200, "angle": 45},
{"x": 120, "y": 215, "angle": 60},
{"x": 130, "y": 210, "angle": 90},
{"x": 115, "y": 205, "angle": 30},
]
#### Функция для генерации шаблона
import math
# Функция для создания шаблона отпечатка
def create_fingerprint_template(fingerprint_data):
# Преобразуем каждую минутию в формат (x, y, angle)
template = []
for minutia in fingerprint_data:
👉👉👉 ЧИТАТЬ ДАЛЬШЕ 🤖🤖🤖def fetch_data_from_db():
# Имитация запроса к базе данных
return {"user": "John", "email": "john@example.com"}
def send_email(data):
# Имитация отправки электронной почты
print(f"Sending email to {data['email']}")
def process_user_data():
data = fetch_data_from_db()
send_email(data)
Интеграционный тест может выглядеть так
def test_process_user_data():
data = fetch_data_from_db()
assert data["email"] == "john@example.com"
send_email(data)
🚩Функциональное тестирование
Проверка функциональности системы на соответствие требованиям.
🟠Фокус на функциональности
Проверяет, выполняет ли система свои функции в соответствии с заданными требованиями.
🟠Проверка конечного поведения
Тестирует систему с точки зрения конечного пользователя.
🟠Все уровни тестирования
Может включать юнит-тесты, интеграционные тесты, системные и приемочные тесты.
🟠Тестирование "черного ящика"
Не требует знания внутренней структуры или кода системы.
🟠Инструменты
Могут использоваться автоматизированные тестовые фреймворки, такие как Selenium для веб-приложений.
def register_user(username, password):
# Имитация регистрации пользователя
if username and password:
return "Registration successful"
else:
return "Registration failed"
Функциональный тест может выглядеть так:
def test_register_user():
assert register_user("testuser", "securepassword") == "Registration successful"
assert register_user("", "securepassword") == "Registration failed"
🚩Ключевые отличия
🟠Цель
Интеграционное тестирование: Проверка взаимодействия между модулями.
Функциональное тестирование: Проверка функциональности системы на соответствие требованиям.
🟠Фокус
Интеграционное тестирование: Взаимодействие и интерфейсы между модулями.
Функциональное тестирование: Поведение системы с точки зрения пользователя.
🟠Уровень тестирования
Интеграционное тестирование: Промежуточный уровень между юнит-тестами и системными тестами.
Функциональное тестирование: Может охватывать все уровни, включая юнит-тесты, интеграционные, системные и приемочные тесты.
🟠Методология
Интеграционное тестирование: Тестирование "серого ящика" (частичное знание внутренней структуры).
Функциональное тестирование: Тестирование "черного ящика" (без знания внутренней структуры).
Ставь 👍 и забирай 📚 Базу знанийimport time
def expensive_operation(data):
time.sleep(5) # Имитация долгой операции
return sum(data)
def process_data(data):
result = []
for item in data:
result.append(expensive_operation(item))
return result
🚩Оптимизация с использованием
🟠Мокирования
Мы можем замокировать expensive_operation, чтобы она возвращала заранее определенные результаты без выполнения долгих операций.
from unittest.mock import patch
def test_process_data():
data = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
with patch('__main__.expensive_operation') as mock_expensive:
mock_expensive.side_effect = [6, 15, 24] # Заранее определенные результаты
result = process_data(data)
assert result == [6, 15, 24]
assert mock_expensive.call_count == 3 # Проверка, что функция вызвана 3 раза
🟠Кэширования
Используем кэширование для хранения результатов дорогостоящих операций.
from functools import lru_cache
@lru_cache(maxsize=None)
def expensive_operation(data):
time.sleep(5) # Имитация долгой операции
return sum(data)
def process_data(data):
result = []
for item in data:
result.append(expensive_operation(tuple(item))) # Преобразуем список в кортеж для кэширования
return result
🚩Использование фикстур в pytest
Фикстуры для подготовки данных
Создаем фикстуры для подготовки данных, которые используются в тестах.
import pytest
@pytest.fixture
def sample_data():
return [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
def test_process_data(sample_data):
with patch('__main__.expensive_operation') as mock_expensive:
mock_expensive.side_effect = [6, 15, 24] # Заранее определенные результаты
result = process_data(sample_data)
assert result == [6, 15, 24]
🚩Параллельное выполнение тестов
Запуск тестов параллельно
Используйте возможности параллельного выполнения тестов, например, с помощью pytest-xdist.
pytest -n 4 # Запуск тестов в 4 параллельных потоках
Ставь 👍 и забирай 📚 Базу знаний