Argcomplete
Она позволяет легко добавить автодополнение для
Библиотека работает в разных оболочках (bash, zsh и др.) без изменения кода и обладает простой интеграцией — достаточно декорировать функцию
Основные возможности
— Автоматическое дополнение имен файлов и каталогов при вводе путей.
— Предложение вариантов для аргументов на основе возможных значений, описанных через argparse.
— Дополнение для подкоманд в приложениях с вложенной структурой команд.
Argcomplete — это библиотека для автодополнения аргументов командной строки. Она позволяет легко добавить автодополнение для
argparse в интерактивных оболочках (например, bash, zsh). Библиотека работает в разных оболочках (bash, zsh и др.) без изменения кода и обладает простой интеграцией — достаточно декорировать функцию
argparse декоратором @argcomplete.register.Основные возможности
argcomplete:— Автоматическое дополнение имен файлов и каталогов при вводе путей.
— Предложение вариантов для аргументов на основе возможных значений, описанных через argparse.
— Дополнение для подкоманд в приложениях с вложенной структурой команд.
Библиотека yt-dlp
Основные возможности и применение yt-dlp:
— Поддерживает скачивание видео, аудио, плейлистов, каналов и др с YouTube. Помимо этого работает с сотнями других сайтов — Vimeo, Facebook, ВКонтакте, TikTok и др. Позволяет скачивать контент практически отовсюду.
— Извлечение метаданных и обложек видео.
— Конвертация медиафайлов в другие форматы после скачивания.
— Поддержка прокси и лимитов скорости.
— Множество настроек для извлечения данных, именования файлов, пост-обработки и т.д.
— Удобная утилита командной строки и модуль Python для автоматизации.
yt-dlp — это библиотека и утилита командной строки для скачивания видео с YouTube и других сайтов. Основные возможности и применение yt-dlp:
— Поддерживает скачивание видео, аудио, плейлистов, каналов и др с YouTube. Помимо этого работает с сотнями других сайтов — Vimeo, Facebook, ВКонтакте, TikTok и др. Позволяет скачивать контент практически отовсюду.
— Извлечение метаданных и обложек видео.
— Конвертация медиафайлов в другие форматы после скачивания.
— Поддержка прокси и лимитов скорости.
— Множество настроек для извлечения данных, именования файлов, пост-обработки и т.д.
— Удобная утилита командной строки и модуль Python для автоматизации.
#вопросы_с_собеседований
Как Python ищет модули при импорте?
При импорте модулей интерпретатор следует определенному алгоритму поиска:
1. Сначала проверяются встроенные модули, которые поставляются в составе самого Python.
2. Затем по порядку просматриваются пути, перечисленные в sys.path — глобальной переменной, которая содержит список каталогов для поиска модулей.
По умолчанию в sys.path входят: текущий рабочий каталог скрипта, PYTHONPATH — каталоги указанные в этой переменной окружения, каталоги стандартной библиотеки Python.
3. Если модуль не найден — генерируется исключение ImportError.
Как Python ищет модули при импорте?
1. Сначала проверяются встроенные модули, которые поставляются в составе самого Python.
2. Затем по порядку просматриваются пути, перечисленные в sys.path — глобальной переменной, которая содержит список каталогов для поиска модулей.
По умолчанию в sys.path входят: текущий рабочий каталог скрипта, PYTHONPATH — каталоги указанные в этой переменной окружения, каталоги стандартной библиотеки Python.
3. Если модуль не найден — генерируется исключение ImportError.
#вопросы_с_собеседований
Что такое фабрика декораторов?
Фабрика декораторов — это особая разновидность функции высшего порядка, которая возвращает декоратор вместо прямого результата. Главное отличие фабрики декораторов от обычного декоратора в том, что она принимает аргументы, которые могут конфигурировать логику декоратора.
Например, фабрика может принимать имя лог-файла, в который будет производиться запись при вызове декорируемой функции. Или уровень логирования вместо простой записи всех вызовов.
Такой подход позволяет создавать переиспользуемые и гибко настраиваемые декораторы для решения разных задач.
Главные преимущества фабрик декораторов — это возможность абстрагироваться от конкретики реализации, избежать дублирования кода и создавать интуитивный 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.
#вопросы_с_собеседований
Что такое функциональное программирование?
Функциональное программирование — это парадигма программирования, в которой основными строительными блоками являются функции.
В функциональном программировании функции рассматриваются как математические функции — они принимают входные данные и возвращают результат.
Основные принципы функционального программирования:
— Чистота функций: функции не должны иметь побочных эффектов и зависеть только от своих аргументов.
— Иммутабельность: данные в функциональном программировании неизменяемы.
— Рекурсия вместо циклов: в функциональном программировании циклы заменены на рекурсивные вызовы функций.
— Высшего порядка функции: функции могут принимать на вход и возвращать другие функции.
— Ленивые вычисления: вычисления откладываются до тех пор, пока результат не потребуется.
Что такое функциональное программирование?
В функциональном программировании функции рассматриваются как математические функции — они принимают входные данные и возвращают результат.
Основные принципы функционального программирования:
— Чистота функций: функции не должны иметь побочных эффектов и зависеть только от своих аргументов.
— Иммутабельность: данные в функциональном программировании неизменяемы.
— Рекурсия вместо циклов: в функциональном программировании циклы заменены на рекурсивные вызовы функций.
— Высшего порядка функции: функции могут принимать на вход и возвращать другие функции.
— Ленивые вычисления: вычисления откладываются до тех пор, пока результат не потребуется.