except
или перечислить исключения в одном блоке через кортеж. Это позволяет обрабатывать разные ошибки по отдельности или совместно.
try:
result = 10 / 0
except (ZeroDivisionError, TypeError) as e:
print(f"Произошла ошибка: {e}")
В данном примере перехватываются как деление на ноль, так и ошибка типа данных. Оба исключения обрабатываются в одном блоке.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
__init__
.
class MyClass:
class_attr = "Class Attribute" # Атрибут класса
def __init__(self):
self.instance_attr = "Instance Attribute" # Атрибут объекта
Атрибуты класса общие для всех экземпляров, а атрибуты объекта уникальны для каждого экземпляра.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
type()
возвращает тип переданного объекта. Она может использоваться для проверки типа данных или для динамического создания новых типов.
x = 42
print(type(x)) # Выведет <class 'int'>
Если передать три аргумента,
type()
создаёт новый тип: имя, базовые классы и словарь атрибутов. Например, MyClass = type('MyClass', (object,), {'attr': 42})
создаёт новый класс.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
async
перед определением функции. Запуск асинхронной задачи выполняется с помощью await
внутри другой асинхронной функции или через asyncio.run()
.
import asyncio
async def my_task():
print("Задача выполняется")
await asyncio.sleep(1)
asyncio.run(my_task())
Функция
asyncio.run()
запускает асинхронную задачу и управляет циклом событий.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
а
тор присваивания = связывает имя переменной с объектом в памяти. При присваивании создается ссылка на объект, а не копия.
a = 10 # переменная a ссылается на целое число 10
b = a # b ссылается на тот же объект, что и a
Если изменяемый объект модифицируется через одну переменную, это отразится на другой:
lst1 = [1, 2]
lst2 = lst1
lst1.append(3) # изменение через lst1
print(lst2) # [1, 2, 3], так как lst2 ссылается на тот же список
Для изменяемых типов иногда требуется создание копии, чтобы избежать неожиданных изменений.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
zip()
объединяет элементы нескольких итерируемых объектов попарно, создавая итератор кортежей. Работает до исчерпания самой короткой коллекции.
names = ['Alice', 'Bob', 'Charlie']
ages = [25, 30]
for name, age in zip(names, ages):
print(name, age)
Результат:
Alice 25
Bob 30
Для обработки всех элементов, включая непарные, можно использовать
zip_longest
из модуля itertools
.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
try-except
позволяет перехватывать и обрабатывать ошибки ввода-вывода, такие как FileNotFoundError
или PermissionError
.
try:
with open('file.txt', 'r') as file:
data = file.read()
except FileNotFoundError:
print("Файл не найден")
except IOError:
print("Ошибка чтения файла")
Блок
try
выполняет потенциально опасный код, а except
ловит конкретные исключения. Можно обрабатывать несколько типов ошибок или использовать общий except IOError
для всех операций ввода-вывода.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
def log_generator(func):
def wrapper(*args, **kwargs):
print("Generator started")
gen = func(*args, **kwargs)
for value in gen:
print(f"Yielded: {value}")
yield value
return wrapper
@log_generator
def count_to(n):
for i in range(n):
yield i
Декоратор
log_generator
перехватывает вызов генератора, логирует его запуск и каждое yielded значение. Важно, чтобы обёртка сама возвращала генератор, иначе потеряется ленивое выполнение.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
{}
или функции set()
. Элементы должны быть уникальными и неизменяемыми.
unique_numbers = {1, 2, 3} # Литерал множества
empty_set = set() # Пустое множество (не {} — это словарь)
Для преобразования списка или строки во множество используется
set()
, автоматически удаляющий дубликаты.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Метод
Лучше использовать контекстные менеджеры (with) или явные методы типа
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ Python собеседования
__del__()
вызывается при удалении объекта сборщиком мусора, но его выполнение не гарантируется и зависит от реализации интерпретатора. Не рекомендуется полагаться на него для критически важных операций, таких как освобождение ресурсов.
class Resource:
def __del__(self):
print("Resource released") # Вызывается не всегда
Лучше использовать контекстные менеджеры (with) или явные методы типа
close()
для управления ресурсами.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
pow()
принимает два или три аргумента: основание, степень и необязательный модуль. Возвращает результат возведения в степень, а при наличии модуля — остаток от деления.
result = pow(2, 3) # 2 в степени 3 → 8
mod_result = pow(2, 3, 3) # (2³) % 3 → 2
Альтернатива оператору
**
, но с поддержкой модульной арифметики.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
класс django.db.models
.Model, где атрибуты класса представляют поля таблицы. Каждое поле создаётся экземпляром соответствующего класса (CharField, Intege
rField и т.д.) с указанием параметров.
from django.db import models
class User(models.Model):
name = models.CharField(max_length=100)
age = models.IntegerField()
После определения модели необходимо создать и применить миграции для генерации таблицы в БД.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
from django.http import JsonResponse
def get_data(request):
return JsonResponse({'data': 'success'}, status=200) # Успешный запрос
Использование правильных статусов улучшает согласованность API и обработку ошибок.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
def test_addition():
assert 2 + 2 == 4 # Простой assert для проверки логики
Использование
setup
и teardown
методов помогает подготовить и очистить окружение. Моки и стабы изолируют тестируемый модуль от зависимостей.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM