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

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

Backend - @frontview_backend
Python работа - @frontview_python_vacancies
Все IT вакансии - @frontview_all_vacancies
Download Telegram
🟢Основные принципы проектирования RESTful API включают использование HTTP-методов (GET, POST, PUT, DELETE) для выполнения операций CRUD, уникальных идентификаторов ресурсов (URI) и представление данных в форматах, таких как JSON или XML.

API должен быть stateless (не сохранять состояние клиента между запросами) и поддерживать кэширование для повышения производительности. Также важно использовать коды состояния HTTP для информирования клиента о результате запроса.


# Пример URI для ресурса
/users # GET — получить список пользователей
/users/1 # GET — получить данные пользователя с ID 1


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

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

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍51
➡️ Паттерн Decorator позволяет динамически добавлять поведение объекту, не изменяя его исходный код. Реализуется через создание класса-декоратора, который принимает объект и расширяет его функциональность.


class Component:
def operation(self):
return "Component"

class Decorator(Component):
def __init__(self, component):
self._component = component

def operation(self):
return f"Decorator({self._component.operation()})"


Декоратор оборачивает объект и добавляет новое поведение до или после вызова его методов.

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

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍71
👉 Функция getattr() позволяет получать значение атрибута объекта по его имени, переданному в виде строки. Это полезно, когда имя атрибута неизвестно заранее или динамически изменяется.

Синтаксис:

getattr(object, name[, default])


- object — объект, атрибут которого нужно получить.
- name — строка, имя атрибута.
- default — опциональное значение, которое возвращается, если атрибут не найден. Если не указано, выбрасывается AttributeError.

Пример:

class Example:
value = 42

obj = Example()
attribute_name = 'value'
result = getattr(obj, attribute_name) # Получаем значение атрибута 'value'
print(result) # 42


Если атрибут отсутствует, можно вернуть значение по умолчанию:

result = getattr(obj, 'unknown', 'default_value') # 'default_value'


Использование getattr() упрощает работу с динамическими атрибутами и делает код более гибким.

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

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍51
🟠Декораторы для логирования позволяют добавлять логирование вызовов функций без изменения их кода. Это полезно для отслеживания выполнения программы, отладки и анализа.

Пример декоратора для логирования:

import logging

logging.basicConfig(level=logging.INFO)

def log_function_call(func):
def wrapper(*args, **kwargs):
logging.info(f"Calling {func.__name__} with args: {args}, kwargs: {kwargs}")
result = func(*args, **kwargs)
logging.info(f"{func.__name__} returned: {result}")
return result
return wrapper

@log_function_call
def add(a, b):
return a + b

add(2, 3)


- Декоратор log_function_call логирует начало вызова функции, переданные аргументы и результат выполнения.
- Использование @log_function_call перед функцией автоматически добавляет логирование.

Такой подход упрощает добавление логирования в любую функцию, делая код чище и поддерживаемым.

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

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍92
Функция sum() вычисляет сумму элементов итерируемого объекта, такого как список, кортеж или множество, принимая только числовые значения. Вторым аргументом можно передать начальное значение, которое будет добавлено к результату.

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍61
➡️Метод pop() используется для удаления и возврата элемента из списка по указанному индексу. Если индекс не указан, удаляется последний элемент.

Синтаксис:

list.pop([index])


- index — опциональный параметр, указывающий позицию элемента. Если не указан, по умолчанию используется -1 (последний элемент).

Пример:

numbers = [1, 2, 3, 4]
removed_element = numbers.pop(1) # Удаляет элемент с индексом 1
print(numbers) # [1, 3, 4]
print(removed_element) # 2


Если список пуст или индекс выходит за пределы, возникает IndexError.

Использование pop() удобно для работы со стеками и удаления элементов с сохранением их значений.

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

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍71
➡️ Для обработки исключений в асинхронном коде используется конструкция try/except вместе с ключевым словом await. Это позволяет перехватывать ошибки, возникающие при выполнении асинхронных операций.


async def fetch_data():
try:
response = await some_async_function()
return response
except SomeSpecificError as e:
print(f"An error occurred: {e}")
except Exception as e:
print(f"Unexpected error: {e}")


Если асинхронная функция вызывает исключение, оно будет перехвачено в блоке except. Это особенно полезно при работе с сетевыми запросами или другими операциями, где возможны сбои.

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

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍81
Для записи списка строк в файл можно использовать метод writelines, который принимает список строк и записывает их в файл. Если нужно добавить переносы строк, их следует включить в каждую строку списка перед записью.

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


result = abs(-10) # Вернет 10


Для комплексных чисел abs() возвращает величину (модуль) числа:


result = abs(3 + 4j) # Вернет 5.0


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

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

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31
🔘Для проверки наличия элемента в списке используется оператор in. Он возвращает True, если элемент найден, и False, если нет.


fruits = ['apple', 'banana', 'orange']
print('banana' in fruits) # True
print('grape' in fruits) # False


Для проверки отсутствия элемента можно использовать not in:

print('grape' not in fruits) # True


Этот способ работает для любых итерируемых объектов и является наиболее читаемым и эффективным для большинства случаев.

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

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


empty_tuple = () # Пустой кортеж
single_element_tuple = (42,) # Кортеж с одним элементом
multiple_elements_tuple = (1, 2, 3) # Кортеж с несколькими элементами


Кортеж также можно создать без скобок, просто перечислив элементы через запятую:

another_tuple = 4, 5, 6


Кортежи неизменяемы, поэтому после создания их элементы нельзя изменить.

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

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
async и await используются для работы с асинхронным кодом. Они позволяют писать неблокирующие операции, что особенно полезно для задач, связанных с вводом-выводом (например, сетевые запросы).

async
Определяет асинхронную функцию. Такая функция возвращает корутину, которая может быть приостановлена и возобновлена.

async def fetch_data():
return "data"


await
Используется внутри асинхронной функции для ожидания результата другой асинхронной операции. Код после await выполняется только после завершения ожидаемой задачи.

async def main():
result = await fetch_data()
print(result)


Асинхронные функции вызываются через asyncio.run или внутри других асинхронных функций. Они позволяют эффективно управлять множеством задач без блокировки основного потока.

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

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥3
➡️ Функция isinstance() позволяет проверить, принадлежит ли объект к определенному классу или типу. Это полезно для проверки типов данных и обработки различных случаев в коде.

Синтаксис:

isinstance(object, classinfo)


- object — объект, тип которого проверяется.
- classinfo — класс, тип или кортеж классов/типов для проверки.

Пример:

value = 42
if isinstance(value, int):
print("Это целое число")
elif isinstance(value, (float, str)):
print("Это либо float, либо строка")


Функция возвращает True, если объект является экземпляром указанного класса или одного из классов в кортеже. Это удобно для проверки типов без явного сравнения через type().

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

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Распаковка кортежей позволяет извлечь элементы кортежа в отдельные переменные. Количество переменных должно совпадать с количеством элементов кортежа, иначе возникнет ошибка.

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

Синтаксис:

class ParentClass:
def __init__(self, value):
self.value = value

class ChildClass(ParentClass):
def display(self):
print(f"Value: {self.value}")


- ParentClass — родительский класс.
- ChildClass — дочерний класс, который наследует атрибуты и методы ParentClass.

Дочерний класс может переопределять методы родительского или добавлять новые. Например, метод __init__ можно расширить:

class ChildClass(ParentClass):
def __init__(self, value, extra):
super().__init__(value)
self.extra = extra


Здесь super() используется для вызова метода родительского класса.

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

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Кортежи и списки — это встроенные структуры данных в Python, но они имеют ключевые различия.

1️⃣ Кортежи (tuple) неизменяемы, то есть после создания их элементы нельзя изменить, добавить или удалить. Это делает кортежи более безопасными для данных, которые не должны изменяться. Кортежи создаются с помощью круглых скобок: my_tuple = (1, 2, 3).

2️⃣ Списки (list) изменяемы, что позволяет добавлять, удалять или изменять элементы. Списки создаются с помощью квадратных скобок: my_list = [1, 2, 3].

✏️ Из-за неизменяемости кортежи могут быть более производительными и использоваться в качестве ключей в словарях, в отличие от списков. Выбор между кортежами и списками зависит от необходимости изменения данных.

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

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
🔹В Python переменная, которая не инициализирована, не существует в текущей области видимости. Попытка доступа к такой переменной вызовет исключение NameError. Это происходит, потому что интерпретатор не может найти ссылку на переменную в памяти.


print(x) # NameError: name 'x' is not defined


В данном примере переменная x не была создана, поэтому попытка её использования приводит к ошибке. Важно всегда инициализировать переменные перед их использованием, чтобы избежать подобных ошибок.

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

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Модуль os предоставляет функции для работы с файловой системой, такие как создание, удаление, переименование файлов и директорий, а также получение информации о них. С его помощью можно управлять путями, проверять существование файлов и выполнять другие операции, связанные с файловой системой.

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
😎Анонимные функции — это функции, которые определяются без имени с помощью ключевого слова lambda. Они используются для создания простых функций "на лету", когда нет необходимости объявлять их через def.


multiply = lambda x, y: x * y
print(multiply(3, 4)) # 12


Анонимные функции часто применяются в сочетании с функциями высшего порядка, такими как map, filter или sorted, для выполнения операций над коллекциями. Они ограничены одной строкой выражения и не поддерживают сложные конструкции, такие как циклы или условия.

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

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