#вопросы_с_собеседований
Что такое фабрика декораторов?
Фабрика декораторов — это особая разновидность функции высшего порядка, которая возвращает декоратор вместо прямого результата. Главное отличие фабрики декораторов от обычного декоратора в том, что она принимает аргументы, которые могут конфигурировать логику декоратора.
Например, фабрика может принимать имя лог-файла, в который будет производиться запись при вызове декорируемой функции. Или уровень логирования вместо простой записи всех вызовов.
Такой подход позволяет создавать переиспользуемые и гибко настраиваемые декораторы для решения разных задач.
Главные преимущества фабрик декораторов — это возможность абстрагироваться от конкретики реализации, избежать дублирования кода и создавать интуитивный API для декораторов с настройками.
Что такое фабрика декораторов?
Например, фабрика может принимать имя лог-файла, в который будет производиться запись при вызове декорируемой функции. Или уровень логирования вместо простой записи всех вызовов.
Такой подход позволяет создавать переиспользуемые и гибко настраиваемые декораторы для решения разных задач.
Главные преимущества фабрик декораторов — это возможность абстрагироваться от конкретики реализации, избежать дублирования кода и создавать интуитивный API для декораторов с настройками.
Функции, поддерживающие только именованные аргументы (kwargs)
**kwargs (keyword arguments) — это способ передачи произвольного количества именованных аргументов в функцию.
В функциях после позиционных и обычных именованных аргументов указывают параметр
В
Благодаря этому через
Если одновременно используются
#это_база
**kwargs (keyword arguments) — это способ передачи произвольного количества именованных аргументов в функцию.
В функциях после позиционных и обычных именованных аргументов указывают параметр
**kwargs.В
kwargs передаются аргументы в виде ключ-значение. Внутри функции kwargs становится словарем, где ключи — имена аргументов, значения — значения аргументов. Благодаря этому через
kwargs можно передать любое количество дополнительных аргументов в функцию.Если одновременно используются
*args и **kwargs, то в вызове сначала указываются *args.#это_база
Атрибут __slots__
Этот атрибут позволяет ограничить создание новых атрибутов в экземплярах класса.
Использование
Атрибут полезен, когда заранее известны все атрибуты класса и не нужна динамическая задача новых. Например, для простых данных или immutable классов.
#это_база
Этот атрибут позволяет ограничить создание новых атрибутов в экземплярах класса.
__slots__ определяется как список имен атрибутов в определении класса. Экземпляры класса с __slots__ могут иметь атрибуты только с именами, определенными в __slots__. Попытка создать новый атрибут приведет к ошибке.Использование
__slots__ экономит память, так как экземпляры не создают словарь __dict__ для атрибутов.__slots__ не наследуются, для каждого подкласса нужно определять свои слоты.Атрибут полезен, когда заранее известны все атрибуты класса и не нужна динамическая задача новых. Например, для простых данных или immutable классов.
#это_база
collections.MutableMapping
Collections.MutableMapping — это интерфейс, который представляет изменяемое отображение (словарь).
Он наследуется от интерфейса
Основное преимущество в использовании
Например, во многих функциях в стандартной библиотеке есть параметры типа
Collections.MutableMapping — это интерфейс, который представляет изменяемое отображение (словарь).
Он наследуется от интерфейса
Mapping и добавляет методы для изменения отображения, такие как __setitem__, __delitem__ и clear. Основное преимущество в использовании
MutableMapping — это возможность передавать экземпляры такого класса в любое API, ожидающее словарь. Например, во многих функциях в стандартной библиотеке есть параметры типа
dict. Если создать класс, реализующий MutableMapping, его экземпляры можно будет передавать в такие функции.collections.Counter
Collections.Counter — это класс, предназначенный для подсчета хешей (hashable объектов).
Он позволяет удобно и эффективно подсчитывать вхождения элементов в какой-либо последовательности.
Основное отличие
Основные способы использования
— Подсчет слов или букв в тексте.
— Подсчет появления элементов в списке или итераторе.
— Нахождение наиболее часто встречающихся элементов.
— Использование при решении задач на вероятность и статистику.
Collections.Counter — это класс, предназначенный для подсчета хешей (hashable объектов).
Он позволяет удобно и эффективно подсчитывать вхождения элементов в какой-либо последовательности.
Основное отличие
Counter от обычного словаря в том, что он не выбрасывает исключение, если ключ не существует, а просто создает новый ключ со значением 0. Это упрощает подсчет элементов.Counter может принимать на вход любую итерируемую последовательность (список, кортеж и т.д.).Основные способы использования
Counter:— Подсчет слов или букв в тексте.
— Подсчет появления элементов в списке или итераторе.
— Нахождение наиболее часто встречающихся элементов.
— Использование при решении задач на вероятность и статистику.
#вопросы_с_собеседований
Что такое замыкание?
Замыкание (closure) — это функция, которая запоминает значения переменных из области видимости, в которой она была создана, и может получить к ним доступ, даже если она будет вызвана за пределами этой области видимости.
Ключевым моментом является то, что замыкание запоминает ссылки на переменные, а не сами значения. Это позволяет обращаться к актуальным значениям переменных даже после того, как функция, создавшая замыкание, завершила работу.
Обычно замыкания используются, если нужно:
— Создать функцию с сохранением некоторого состояния между вызовами.
— Избежать использования глобальных переменных и повысить инкапсуляцию.
— Частично применить функцию без вызова (создание другой функции).
В Python замыкания реализуются элегантно и просто с помощью вложенных функций. Это мощный механизм, позволяющий писать короткий и чистый код.
Что такое замыкание?
Ключевым моментом является то, что замыкание запоминает ссылки на переменные, а не сами значения. Это позволяет обращаться к актуальным значениям переменных даже после того, как функция, создавшая замыкание, завершила работу.
Обычно замыкания используются, если нужно:
— Создать функцию с сохранением некоторого состояния между вызовами.
— Избежать использования глобальных переменных и повысить инкапсуляцию.
— Частично применить функцию без вызова (создание другой функции).
В Python замыкания реализуются элегантно и просто с помощью вложенных функций. Это мощный механизм, позволяющий писать короткий и чистый код.
#вопросы_с_собеседований
Что такое объект первого класса?
Объект первого класса (first-class object) — это объект, который можно использовать точно так же, как и любые другие объекты в этом языке.
К основным признакам объектов первого класса относятся:
— Возможность присваивать объект переменной или элементу структуры данных.
— Возможность передавать объект в функцию в качестве аргумента.
— Возможность возвращать объект из функции в качестве результата.
— Возможность создавать коллекции из таких объектов.
В Python функции, классы, модули, типы и другие объекты являются объектами первого класса.
Это значит, что их можно динамически создавать, удалять, передавать как аргументы и возвращать из функций.
Что такое объект первого класса?
К основным признакам объектов первого класса относятся:
— Возможность присваивать объект переменной или элементу структуры данных.
— Возможность передавать объект в функцию в качестве аргумента.
— Возможность возвращать объект из функции в качестве результата.
— Возможность создавать коллекции из таких объектов.
В Python функции, классы, модули, типы и другие объекты являются объектами первого класса.
Это значит, что их можно динамически создавать, удалять, передавать как аргументы и возвращать из функций.
Метод isspace()
Метод isspace() проверяет, является ли символ пробельным.
Пробельными символами считаются:
— Пробел (
— Табуляция (
— Перевод строки (
— Перевод каретки (
— Прочие unicode символы, определяемые как пробелы.
Этот метод удобно использовать для проверки и обработки строк.
#это_база
Метод isspace() проверяет, является ли символ пробельным.
Пробельными символами считаются:
— Пробел (
' ').— Табуляция (
'\t').— Перевод строки (
'\n').— Перевод каретки (
'\r').— Прочие unicode символы, определяемые как пробелы.
isspace() возвращает True, если символ пробельный, и False в противном случае.Этот метод удобно использовать для проверки и обработки строк.
#это_база
Метод id()
Метод id() возвращает уникальный идентификатор объекта.
Каждый объект в Python имеет свой идентификатор, который назначается при создании объекта. Этот идентификатор гарантированно уникален в пределах жизни объекта.
#это_база
Метод id() возвращает уникальный идентификатор объекта.
Каждый объект в Python имеет свой идентификатор, который назначается при создании объекта. Этот идентификатор гарантированно уникален в пределах жизни объекта.
id() позволяет получить числовое представление идентификатора объекта. Это может быть полезно при отладке и тестировании программы.#это_база
Библиотека xarray
xarray предназначена для работы с многомерными данными и массивами.
Она позволяет удобно хранить и обрабатывать данные с метаданными, такими как координаты, время и другие измерения.
Основные преимущества
В этом примере создана
xarray предназначена для работы с многомерными данными и массивами.
Она позволяет удобно хранить и обрабатывать данные с метаданными, такими как координаты, время и другие измерения.
Xarray часто используется в научных вычислениях и анализе данных, особенно при работе с геопространственными данными, временными рядами, метеоданными и другой многомерной информацией. Основные преимущества
xarray — это возможность помечать оси данных и выполнять операции по этим осям, легкость совместного использования данных и метаданных.В этом примере создана
DataArray со случайными данными размерностей 2x3. Для осей заданы метки "city" и "year". Это позволяет легко обращаться к данным по городам и годам. Xarray сохраняет метаданные вместе с данными.Библиотека igraph
igraph предназначена для работы с графами и сетями. Она позволяет строить, анализировать и визуализировать графы.
Основные возможности
igraph предназначена для работы с графами и сетями. Она позволяет строить, анализировать и визуализировать графы.
Igraph часто используется при анализе социальных сетей, изучении структуры больших сетей (например, ссылок в интернете), в биоинформатике для анализа взаимодействий белков и других задач, связанных с теорией графов. Основные возможности
igraph — генерация случайных и классических графов, вычисление различных метрик (степени вершин, диаметра графа и т. д.), поиск сообществ и кластеров.#вопросы_с_собеседований
В чем отличие тредов от мультипроцессинга?
Главное отличие заключается в разделении памяти. Процессы независимы друг от друга, имеют раздельные адресные пространства, идентификаторы, ресурсы.
Треды исполняются в совместном адресном пространстве, имеют общий доступ к памяти, переменным, загруженным модулям.
В чем отличие тредов от мультипроцессинга?
Треды исполняются в совместном адресном пространстве, имеют общий доступ к памяти, переменным, загруженным модулям.
#вопросы_с_собеседований
Что такое Green thread?
Green thread (зеленые треды) — легковесные треды внутри виртуальной машины.
Операционная система не видит их. С точки зрения ОС запущен один процесс виртуальной машины, а что внутри нее — неизвестно.
Такими тредами управляет сама виртуальная машина: порождает, исполняет, согласует доступ к ресурсам.
Что такое Green thread?
Операционная система не видит их. С точки зрения ОС запущен один процесс виртуальной машины, а что внутри нее — неизвестно.
Такими тредами управляет сама виртуальная машина: порождает, исполняет, согласует доступ к ресурсам.
Метод Counter.elements()
Метод Counter.elements() возвращает итератор по элементам в словаре Counter.
Этот метод позволяет эффективно перебрать элементы словаря
Как видно из примера, метод
Это позволяет эффективно обрабатывать элементы, не создавая промежуточные структуры данных.
#это_база
Метод Counter.elements() возвращает итератор по элементам в словаре Counter.
Этот метод позволяет эффективно перебрать элементы словаря
Counter без создания копии.Как видно из примера, метод
elements() возвращает итератор по элементам словаря Counter в порядке их добавления. Это позволяет эффективно обрабатывать элементы, не создавая промежуточные структуры данных.
#это_база
Контекстные менеджеры
Контекстные менеджеры — это объекты, используемые для управления контекстом с помощью оператора with.
Они позволяют автоматически выполнять "вход" в контекст и "выход" из него, не заботясь о ручной финализации объекта.
Контекстные менеджеры реализуют методы
За счет автоматизации управления ресурсами контекстные менеджеры позволяют писать более простой и читабельный код.
#это_база
Контекстные менеджеры — это объекты, используемые для управления контекстом с помощью оператора with.
Они позволяют автоматически выполнять "вход" в контекст и "выход" из него, не заботясь о ручной финализации объекта.
Контекстные менеджеры реализуют методы
enter и exit, вызываемые при входе и выходе из контекста.За счет автоматизации управления ресурсами контекстные менеджеры позволяют писать более простой и читабельный код.
#это_база
Библиотека PyQt6
PyQt6 — это кроссплатформенная библиотека для создания графических пользовательских интерфейсов. Она позволяет разрабатывать приложения с графическим интерфейсом для desktop и mobile устройств.
С помощью этой библиотеки можно создавать оконные приложения, виджеты, диалоги, меню и другие элементы GUI.
PyQt6 — это кроссплатформенная библиотека для создания графических пользовательских интерфейсов. Она позволяет разрабатывать приложения с графическим интерфейсом для desktop и mobile устройств.
PyQt6 основана на фреймворке Qt и использует систему сигналов и слотов для организации взаимодействия в приложении. С помощью этой библиотеки можно создавать оконные приложения, виджеты, диалоги, меню и другие элементы GUI.
PyQt6 широко применяется для разработки кроссплатформенных приложений под Windows, Linux и macOS.Библиотека PyGObject
PyGObject — это библиотека, которая предоставляет привязки к библиотеке GObject используемой в GNOME.
Она позволяет использовать
С его помощью можно создавать оконные приложения, виджеты, диалоги и другие элементы интерфейса на языке Python.
PyGObject — это библиотека, которая предоставляет привязки к библиотеке GObject используемой в GNOME.
Она позволяет использовать
GTK+ и другие библиотеки GNOME для создания графических интерфейсов пользователя.PyGObject можно использовать для разработки кроссплатформенных GUI-приложений, которые будут работать в средах Linux, Windows и macOS. С его помощью можно создавать оконные приложения, виджеты, диалоги и другие элементы интерфейса на языке Python.
#вопросы_с_собеседований
Что такое функциональное программирование?
Функциональное программирование — это парадигма программирования, в которой основными строительными блоками являются функции.
В функциональном программировании функции рассматриваются как математические функции — они принимают входные данные и возвращают результат.
Основные принципы функционального программирования:
— Чистота функций: функции не должны иметь побочных эффектов и зависеть только от своих аргументов.
— Иммутабельность: данные в функциональном программировании неизменяемы.
— Рекурсия вместо циклов: в функциональном программировании циклы заменены на рекурсивные вызовы функций.
— Высшего порядка функции: функции могут принимать на вход и возвращать другие функции.
— Ленивые вычисления: вычисления откладываются до тех пор, пока результат не потребуется.
Что такое функциональное программирование?
В функциональном программировании функции рассматриваются как математические функции — они принимают входные данные и возвращают результат.
Основные принципы функционального программирования:
— Чистота функций: функции не должны иметь побочных эффектов и зависеть только от своих аргументов.
— Иммутабельность: данные в функциональном программировании неизменяемы.
— Рекурсия вместо циклов: в функциональном программировании циклы заменены на рекурсивные вызовы функций.
— Высшего порядка функции: функции могут принимать на вход и возвращать другие функции.
— Ленивые вычисления: вычисления откладываются до тех пор, пока результат не потребуется.
#вопросы_с_собеседований
Что такое функция высшего порядка?
Функция высшего порядка — это функция, которая принимает на вход или возвращает другую функцию.
Использование функций высшего порядка позволяет писать более абстрактный, модульный и параметризуемый код. Это мощная концепция функционального программирования
Примеры использования функций высшего порядка:
— Передача функции в качестве аргумента: например, можно передать функцию map, которая применяет другую функцию ко всем элементам последовательности.
— Возвращение функции из функции: можно написать функцию, которая будет генерировать и возвращать другие функции.
— Присваивание функции переменной: функции являются объектами, поэтому их можно присваивать переменным и передавать как аргументы.
— Хранение функций в структурах данных: можно поместить функции в список, словарь и вызывать их оттуда.
— Декораторы: декораторы позволяют применить одну функцию к другой и расширить её функциональность.
Что такое функция высшего порядка?
Использование функций высшего порядка позволяет писать более абстрактный, модульный и параметризуемый код. Это мощная концепция функционального программирования
Примеры использования функций высшего порядка:
— Передача функции в качестве аргумента: например, можно передать функцию map, которая применяет другую функцию ко всем элементам последовательности.
— Возвращение функции из функции: можно написать функцию, которая будет генерировать и возвращать другие функции.
— Присваивание функции переменной: функции являются объектами, поэтому их можно присваивать переменным и передавать как аргументы.
— Хранение функций в структурах данных: можно поместить функции в список, словарь и вызывать их оттуда.
— Декораторы: декораторы позволяют применить одну функцию к другой и расширить её функциональность.
Конструкция try-except-else
Конструкция try-except-else используется для обработки исключений. Особенность этой конструкции заключается в
В этом примере в блоке
#это_база
Конструкция try-except-else используется для обработки исключений. Особенность этой конструкции заключается в
else, этот блок выполняется, если в блоке try не было исключений.В этом примере в блоке
try происходит деление на ноль, которое генерирует исключение ZeroDivisionError. Оно перехватывается в блоке except и обрабатывается. Блок else не выполняется, так как было исключение.#это_база
Сортировка пузырьком
Сортировка пузырьком — это простой алгоритм сортировки, основанный на сравнении и обмене соседних элементов.
Во время сортировки сравниваются два соседних элемента массива, если левый элемент больше правого, они меняются местами.
Проход по элементам повторяется до тех пор, пока не будут отсортированы все элементы.
Сложность алгоритма O(n^2) — квадратичная.
Реализация сортировки пузырьком представлена на изображении.
#это_база
Сортировка пузырьком — это простой алгоритм сортировки, основанный на сравнении и обмене соседних элементов.
Во время сортировки сравниваются два соседних элемента массива, если левый элемент больше правого, они меняются местами.
Проход по элементам повторяется до тех пор, пока не будут отсортированы все элементы.
Сложность алгоритма O(n^2) — квадратичная.
Реализация сортировки пузырьком представлена на изображении.
#это_база