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

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

Backend - @frontview_backend
Python работа - @frontview_python_vacancies
Все IT вакансии - @frontview_all_vacancies
Download Telegram
▶️Для создания кортежа с одним элементом необходимо добавить запятую после этого элемента, даже если он один. Без запятой выражение будет воспринято как обычное значение, а не как кортеж.


single_element_tuple = (42,)


В данном примере single_element_tuple будет кортежем с одним элементом 42. Если запятую убрать, например, (42), это будет просто число, а не кортеж.

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

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
🟠 Функция sorted() возвращает новый отсортированный список из итерируемого объекта. Она принимает параметры: сам итерируемый объект, key для определения функции сортировки и reverse для указания порядка сортировки.


numbers = [3, 1, 4, 1, 5, 9]

# Сортировка по возрастанию
sorted_numbers = sorted(numbers)

# Сортировка по убыванию
sorted_numbers_desc = sorted(numbers, reverse=True)

# Сортировка строк по длине
words = ["apple", "banana", "cherry"]
sorted_words = sorted(words, key=len)


Параметр key позволяет задавать пользовательскую логику сортировки, а reverse определяет направление.

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

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
😊Функция round() округляет число до указанного количества знаков после запятой. Принимает два аргумента: число для округления и количество знаков после запятой (по умолчанию 0). Если количество знаков не указано, число округляется до ближайшего целого.


result = round(3.14159, 2) # Округляет до 3.14


Если количество знаков отрицательное, округление происходит до десятков, сотен и т.д. Например, round(12345, -2) вернёт 12300.

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

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

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
🟠SQLAlchemy — это библиотека для работы с базами данных, которая поддерживает ORM (объектно-реляционное отображение) и SQL-запросы. Для начала работы необходимо создать подключение к базе данных с помощью create_engine(), затем определить модели данных через классы, наследуемые от Base.


from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base

engine = create_engine('sqlite:///example.db')
Base = declarative_base()

class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String)


После создания моделей можно выполнять запросы через сессию, используя Session. Например, добавление данных: session.add(User(name='Alice')) и фиксация изменений: session.commit().

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

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
*️⃣Модели в Django представляют собой классы Python, которые описывают структуру таблиц в базе данных. Каждый атрибут класса модели соответствует полю в таблице. Django автоматически создаёт SQL-запросы для работы с базой данных на основе этих моделей.


from django.db import models

class Article(models.Model):
title = models.CharField(max_length=100)
content = models.TextField()
published_date = models.DateTimeField(auto_now_add=True)


Модель Article создаст таблицу с полями title, content и published_date. Для работы с данными используются методы ORM, например, Article.objects.create(title="Example") для добавления записи.

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

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

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Основные инструменты для управления зависимостями включают pip для установки пакетов, virtualenv для создания изолированных окружений и requirements.txt для фиксации списка зависимостей. Также популярны pipenv и poetry, которые объединяют управление зависимостями и виртуальными окружениями.


# requirements.txt
flask==2.0.1
requests>=2.26.0


pipenv и poetry используют файлы Pipfile и pyproject.toml соответственно, что упрощает управление зависимостями и их версиями.

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

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


class Singleton:
_instance = None

def __new__(cls, *args, **kwargs):
if not cls._instance:
cls._instance = super().__new__(cls)
return cls._instance


Например, паттерн Singleton гарантирует, что класс имеет только один экземпляр. Это полезно для управления общими ресурсами, такими как подключения к базе данных.

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

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

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
🟢Функция range() генерирует последовательность чисел, которая часто используется в циклах for для итерации. Она может принимать один, два или три аргумента: старт, стоп и шаг.


for i in range(5):
print(i) # Выведет числа от 0 до 4


Если указаны два аргумента, например, range(2, 6), цикл начнётся с 2 и закончится на 5. Третий аргумент задаёт шаг: range(1, 10, 2) выведет нечётные числа от 1 до 9.

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

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍1
🛑Список создаётся с использованием квадратных скобок []. Элементы могут быть любого типа и разделяются запятыми. Для добавления элемента в список используется метод append().


my_list = [1, 2, 3]
my_list.append(4) # Добавляет 4 в конец списка


Также можно использовать метод insert() для добавления элемента на определённую позицию. Например, my_list.insert(1, 10) добавит число 10 на вторую позицию.

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

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
Оператор continue используется в циклах для пропуска текущей итерации и перехода к следующей. Он полезен, когда нужно игнорировать определённые элементы или условия, не прерывая выполнение цикла.

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍71🤔1
🛑Для возврата нескольких значений из функции можно использовать кортеж. Достаточно перечислить значения через запятую в операторе 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
👍8
🔹Для перехвата нескольких типов исключений можно использовать несколько блоков except или перечислить исключения в одном блоке через кортеж. Это позволяет обрабатывать разные ошибки по отдельности или совместно.


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


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

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

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

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥31
🔵Атрибуты класса принадлежат самому классу и разделяются всеми его экземплярами. Они определяются на уровне класса и доступны через имя класса или экземпляра. Атрибуты объекта принадлежат конкретному экземпляру и определяются в методах, обычно в __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
👍7
▶️Функция 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
👍8
Для удаления элемента из списка по значению используется метод remove(), который удаляет первое вхождение указанного значения. Если элемент не найден, возникает ошибка ValueError.

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
🟡Для создания асинхронной задачи используется ключевое слово 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
👍6