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
👉 Наследование — это механизм, позволяющий создавать новый класс на основе существующего. Новый класс (дочерний) наследует атрибуты и методы родительского класса, что способствует повторному использованию кода и организации иерархии.

Синтаксис:

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
Функция help() используется для получения справочной информации о модулях, классах, функциях и других объектах. Достаточно передать объект в help(), и будет выведена документация, если она доступна.

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

Блок finally выполняется всегда, независимо от того, возникло исключение или нет. Он используется для выполнения обязательных действий, таких как освобождение ресурсов, даже если в try произошла ошибка.


try:
result = 10 / 0
except ZeroDivisionError:
print("Деление на ноль")
finally:
print("Это выполнится в любом случае")


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

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

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍82
➡️Метод __str__() предназначен для возврата читаемого строкового представления объекта, которое используется, например, при вызове print() или str(). Он должен быть ориентирован на удобство для пользователя.

Метод __repr__() возвращает однозначное и информативное строковое представление объекта, которое часто используется для отладки. Если __str__() не определён, по умолчанию вызывается __repr__().


class Example:
def __str__(self):
return "Читаемое представление"

def __repr__(self):
return "Пример: информативное представление"


При вызове print(Example()) выведется "Читаемое представление", а при вызове repr(Example()) — "Пример: информативное представление".

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

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

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


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