
- Главная
- Каталог
- Интернет технологии
- Python | Вопросы собесов
Python | Вопросы собесов
Разбираем вопросы с собеседований на Python разработчика. Очень активная и лояльная аудитория.
Статистика канала
dict) — это структура данных, которая хранит пары "ключ → значение".
{} (фигурные скобки)
my_dict = {"name": "Alice", "age": 25, "city": "New York"}{}
Изменение значения
my_dict["age"] = 26 # Меняем возраст{}
del — удаление по ключу
del my_dict["city"]{}
Перебор ключей (for key in dict)
for key in my_dict:
print(key, my_dict[key]){}
Проверка наличия ключа
if "name" in my_dict:
print("Ключ существует!"){}
squares = {x: x**2 for x in range(1, 6)}
print(squares) # {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}{}
list как ключ!
my_dict[[1, 2, 3]] = "Ошибка" # TypeError: unhashable type: 'list'{}
Можно использовать tuple, int, str, frozenset
my_dict[(1, 2, 3)] = "OK"{}
Ставь 👍 и забирай 📚 Базу знанийlist) можно разными способами в зависимости от задачи:
На части фиксированной длины
На N частей
По условию
n, можно использовать list comprehension
def split_list(lst, size):
return [lst[i:i + size] for i in range(0, len(lst), size)]
data = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(split_list(data, 3)) {}
Вывод
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]{}
N частей, можно использовать numpy или itertools
import numpy as np
def split_into_n_parts(lst, n):
return np.array_split(lst, n)
data = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(split_into_n_parts(data, 4)) {}
Вывод
[array([1, 2, 3]), array([4, 5]), array([6, 7]), array([8, 9])]{}
data = [1, 2, 3, 4, 5, 6, 7, 8, 9]
even = [x for x in data if x % 2 == 0]
odd = [x for x in data if x % 2 != 0]
print(even, odd){}
Вывод
[2, 4, 6, 8] [1, 3, 5, 7, 9]{}
Ставь 👍 и забирай 📚 Базу знанийProxy контролирует доступ к классу RealSubject, добавляя проверку доступа и логирование.
from abc import ABC, abstractmethod
class Subject(ABC):
@abstractmethod
def request(self):
pass
class RealSubject(Subject):
def request(self):
print("Реальный объект: Обработка запроса.")
class Proxy(Subject):
def __init__(self, real_subject):
self._real_subject = real_subject
def request(self):
if self.check_access():
self._real_subject.request()
self.log_access()
def check_access(self):
print("Заместитель: Проверка доступа перед выполнением запроса.")
return True
def log_access(self):
print("Заместитель: Логирование времени запроса.")
# Клиентский код
real_subject = RealSubject()
proxy = Proxy(real_subject)
proxy.request(){}
Ставь 👍 и забирай 📚 Базу знанийStrict-Transport-Security (HTTPS)
- X-Content-Type-Options: nosniff
- X-Frame-Options: DENY
APPEND_SLASH=True (если /about → перенаправит на /about/).
Удаление www. (www.example.com → example.com).
Обработка кодировки и контента.
request.session["user_id"] = 42 # Сохраняем ID пользователя в сессии{}
request.user, автоматически определяя пользователя.
if request.user.is_authenticated:
print(f"Пользователь: {request.user.username}"){}
<form method="POST">
{% csrf_token %}
<input type="text" name="name">
</form>{}
<iframe>, предотвращая атаку Clickjacking.
X-Frame-Options: DENY{}
django.contrib.messages).
from django.contrib import messages
messages.success(request, "Вы успешно вошли!")
messages.error(request, "Ошибка авторизации!"){}
settings.py:
MIDDLEWARE = [
"django.middleware.security.SecurityMiddleware",
"django.middleware.common.CommonMiddleware",
"django.middleware.csrf.CsrfViewMiddleware",
"django.contrib.sessions.middleware.SessionMiddleware",
"django.contrib.auth.middleware.AuthenticationMiddleware",
]{}
middleware.py
import datetime
class LogMiddleware:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
print(f"[{datetime.datetime.now()}] Запрос: {request.path}")
response = self.get_response(request)
return response{}
Добавляем в settings.py
MIDDLEWARE.append("myapp.middleware.LogMiddleware"){}
Теперь в консоли будем видеть все запросы!
[2024-02-28 12:00:00] Запрос: /
[2024-02-28 12:01:00] Запрос: /login/{}
Ставь 👍 и забирай 📚 Базу знаний
from django.db import models
class UserProfile(models.Model):
name = models.CharField(max_length=100)
age = models.IntegerField(){}
python manage.py makemigrations{}
Django создаст файл миграции в migrations/
migrations/
0001_initial.py # Файл с SQL-изменениями{}
Проверяем SQL-запрос, который будет выполнен
python manage.py sqlmigrate myapp 0001{}
python manage.py migrate{}
models.py
class UserProfile(models.Model):
name = models.CharField(max_length=100)
age = models.IntegerField()
email = models.EmailField(default="example@example.com") # Добавили поле{}
Сгенерируем новую миграцию
python manage.py makemigrations{}
Применяем изменения к БД
python manage.py migrate{}
python manage.py migrate myapp 0001 # Откат до первой миграции{}
Ставь 👍 и забирай 📚 Базу знанийОтзывы канала
всего 2 отзыва
- Добавлен: Сначала новые
- Добавлен: Сначала старые
- Оценка: По убыванию
- Оценка: По возрастанию
Каталог Телеграм-каналов для нативных размещений
Python | Вопросы собесов — это Telegam канал в категории «Интернет технологии», который предлагает эффективные форматы для размещения рекламных постов в Телеграмме. Количество подписчиков канала в 13.5K и качественный контент помогают брендам привлекать внимание аудитории и увеличивать охват. Рейтинг канала составляет 5.3, количество отзывов – 2, со средней оценкой 5.0.
Вы можете запустить рекламную кампанию через сервис Telega.in, выбрав удобный формат размещения. Платформа обеспечивает прозрачные условия сотрудничества и предоставляет детальную аналитику. Стоимость размещения составляет 4895.1 ₽, а за 13 выполненных заявок канал зарекомендовал себя как надежный партнер для рекламы в TG. Размещайте интеграции уже сегодня и привлекайте новых клиентов вместе с Telega.in!
Вы снова сможете добавить каналы в корзину из каталога
Комментарий