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

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


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

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
🟢Функция 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
🛑Список создаётся с использованием квадратных скобок []. Элементы могут быть любого типа и разделяются запятыми. Для добавления элемента в список используется метод 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
Оператор continue используется в циклах для пропуска текущей итерации и перехода к следующей. Он полезен, когда нужно игнорировать определённые элементы или условия, не прерывая выполнение цикла.

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN 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