Python собеседования
2K subscribers
338 photos
451 links
Подготовка к собеседованиям на позицию Python-разработчик

Еще больше на сайте https://frontview-it.ru

Backend - @frontview_backend
Python работа - @frontview_python_vacancies
Все IT вакансии - @frontview_all_vacancies
По рекламе - @frontviewit
Download Telegram
🛑Для возврата нескольких значений из функции можно использовать кортеж. Достаточно перечислить значения через запятую в операторе return, и они будут автоматически упакованы в кортеж.


def get_values():
return 1, 2, 3

result = get_values() # Возвращает кортеж (1, 2, 3)


Также можно явно указать возвращаемые структуры, например, список или словарь, в зависимости от задачи.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
🔹Для перехвата нескольких типов исключений можно использовать несколько блоков except или перечислить исключения в одном блоке через кортеж. Это позволяет обрабатывать разные ошибки по отдельности или совместно.


try:
result = 10 / 0
except (ZeroDivisionError, TypeError) as e:
print(f"Произошла ошибка: {e}")


В данном примере перехватываются как деление на ноль, так и ошибка типа данных. Оба исключения обрабатываются в одном блоке.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
Для чтения всего файла целиком используется метод read(), который возвращает содержимое файла в виде строки. Файл предварительно нужно открыть с помощью функции open().

✈️ Python собеседования
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" # Атрибут объекта


Атрибуты класса общие для всех экземпляров, а атрибуты объекта уникальны для каждого экземпляра.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Python собеседования
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}) создаёт новый класс.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
Для удаления элемента из списка по значению используется метод remove(), который удаляет первое вхождение указанного значения. Если элемент не найден, возникает ошибка ValueError.

✈️ Python собеседования
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() запускает асинхронную задачу и управляет циклом событий.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Python собеседования
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 ссылается на тот же список


Для изменяемых типов иногда требуется создание копии, чтобы избежать неожиданных изменений.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
Цикл for перебирает элементы множества в произвольном порядке, так как множества неупорядочены. Можно использовать для проверки наличия элементов, фильтрации или преобразования данных.

✈️ Python собеседования
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.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Python собеседования
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 для всех операций ввода-вывода.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
Чтобы вызвать метод родительского класса из дочернего, используется функция super(), которая возвращает прокси-объект родительского класса. Например, super().method_name() вызывает метод method_name родительского класса из дочернего.

✈️ Python собеседования
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 значение. Важно, чтобы обёртка сама возвращала генератор, иначе потеряется ленивое выполнение.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
🟠Множество создаётся с помощью фигурных скобок {} или функции set(). Элементы должны быть уникальными и неизменяемыми.


unique_numbers = {1, 2, 3} # Литерал множества
empty_set = set() # Пустое множество (не {} — это словарь)


Для преобразования списка или строки во множество используется set(), автоматически удаляющий дубликаты.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
Для управления CORS в Python веб-приложениях используются middleware или специализированные пакеты, такие как flask-cors для Flask или django-cors-headers для Django. Эти инструменты позволяют настраивать разрешённые домены, методы HTTP-запросов и заголовки для кросс-доменных запросов.

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
Метод __del__() вызывается при удалении объекта сборщиком мусора, но его выполнение не гарантируется и зависит от реализации интерпретатора. Не рекомендуется полагаться на него для критически важных операций, таких как освобождение ресурсов.


class Resource:
def __del__(self):
print("Resource released") # Вызывается не всегда


Лучше использовать контекстные менеджеры (with) или явные методы типа close() для управления ресурсами.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Python собеседования
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


Альтернатива оператору **, но с поддержкой модульной арифметики.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
Функция asyncio.sleep() приостанавливает выполнение корутины на указанное время без блокировки цикла событий, позволяя работать другим задачам. Используется для искусственных задержек в асинхронном коде и имитации долгих операций без остановки всего приложения.

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
➡️ Модель в Django определяется как подкласс django.db.models.Model, где атрибуты класса представляют поля таблицы. Каждое поле создаётся экземпляром соответствующего класса (CharField, IntegerField и т.д.) с указанием параметров.


from django.db import models

class User(models.Model):
name = models.CharField(max_length=100)
age = models.IntegerField()


После определения модели необходимо создать и применить миграции для генерации таблицы в БД.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
🔹HTTP-статус коды в RESTful API помогают клиенту понять результат запроса. Основные группы: 2xx (успех), 3xx (перенаправление), 4xx (ошибка клиента), 5xx (ошибка сервера).


from django.http import JsonResponse

def get_data(request):
return JsonResponse({'data': 'success'}, status=200) # Успешный запрос


Использование правильных статусов улучшает согласованность API и обработку ошибок.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
Для отмены асинхронной задачи используется метод cancel() у объекта Task, созданного через asyncio.create_task(). При отмене задача получит исключение asyncio.CancelledError, которое можно обработать в блоке try/except.

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM