Приветствие и анонс второй части из 100 вопросов по Python.
Призыв подписаться на телеграм-каналы и поставить лайк.
Рекомендация телеграм-канала "Дейта Энезис" с полезными ресурсами по Python.
MRO используется при множественном наследовании.
Пример реализации множественного наследования в Python.
Порядок поиска методов в Python и управление этим порядком.
Аргументы в Python передаются по ссылке, но поведение изменяемых и неизменяемых объектов различается.
Пример с изменяемыми и неизменяемыми типами данных.
Ссылка на статью с подробной информацией.
Линтеры в Python, встроенные в PyCharm и доступные отдельно.
Пример использования функции get_referrers для подсчета ссылок на объект.
Объяснение работы глобальной блокировки интерпретатора GIL.
Python использует компиляцию, хотя это интерпретируемый язык.
Пример работы интерпретатора Python и использование пай-кэша.
Видео на канале Лучано для более подробного объяснения.
Дискрипторы определяют поведение при доступе к атрибутам.
Декораторы изменяют поведение функции.
Пример использования декоратора для вывода отладочной информации.
Объяснение работы декораторов и их применение.
Пример использования дескрипторов для определения атрибутов класса.
Python не освобождает всю память при завершении работы.
Если остаются ссылки на объекты, память будет забита.
Рекомендуется использовать мемори профайлер для выявления и исправления утечек.
Декоратор @property влияет на инициализацию атрибутов.
Декоратор @setter влияет на переопределение атрибутов.
Примеры использования декораторов для печати сообщений при инициализации и переопределении.
Одинаковые строки ссылаются на одно место в памяти.
Ограничения: длина строки не более 20 символов и состоять из символов ASCII.
Примеры проверки интернирования строк.
Можно вручную создать файл с зависимостями или использовать pip freeze.
Pip freeze создает файл с зависимостями, который можно установить с помощью pip install.
Pip install позволяет установить зависимости из zip-архива.
Python не поддерживает хвостовую рекурсию.
Рекомендуется использовать циклы вместо рекурсии для ускорения вычислений.
Пример с вычислением факториала и последовательности Фибоначчи.
Подключение библиотек Python в C и наоборот.
Использование библиотеки ctypes для вызова функций на C.
Преимущества бесшовной интеграции Python и C.
Использование Numpy для векторизации операций.
Применение правильных структур данных: кортежи и словари.
Компиляция кода с помощью интерпретаторов и декораторов.
Использование многопоточности и параллелизма.
Применение линтеров и профайлеров для оптимизации кода.
Пай кэш сохраняет байт-код предыдущих компиляций.
Используется для ускорения обработки программ.
Пай кэш специфичен для каждой версии Python.
Изолированная среда для установки библиотек.
Позволяет избежать конфликтов с уже установленными библиотеками.
Виртуальное окружение создает контейнер для проекта.
Императивные языки подробно описывают процесс выполнения задачи.
Декларативные языки описывают конечный результат, не детализируя процесс.
Пример: в SQL мы описываем результат, а не процесс его достижения.
PIP и Poetry - основные менеджеры пакетов для Python.
Poetry имеет преимущества в простоте установки и управления зависимостями.
PIP остается популярным, но Poetry становится все более востребованным.
Массивы NumPy лежат в одном участке памяти, что упрощает работу с ними.
Они оптимизированы для математических операций, таких как сложение и умножение матриц.
NumPy массивы позволяют избежать необходимости в дополнительных функциях для работы с вложенными списками.
Замыкание позволяет внутренней функции изменять внешнюю переменную.
Используется ключевое слово "nonlocal" для доступа к внешней переменной из внутренней функции.
Пример кода показывает, как реализовать замыкание и изменить статическую переменную.
Для создания словаря с нуля используется хэш-таблица и методы инициализации, добавления и получения элементов.
Пример кода показывает, как инициализировать и использовать методы для создания словаря.
Важно правильно реализовать методы для добавления и получения элементов.
Генераторы лучше считать с конца, чтобы избежать ошибок.
Пример кода показывает, как использовать генераторы для подсчета количества заглавных символов в строке.
Генераторы позволяют эффективно работать с вложенными структурами данных.
Функция defaultdict инициализирует словари начальными значениями.
Класс Counter позволяет подсчитывать количество вхождений элементов в итерируемый объект.
Именованные кортежи позволяют создавать объекты с атрибутами и обращаться к ним через точку.
Флаг -O позволяет оптимизировать код, удаляя лишние записи.
Переменные среды, такие как PYTHONPATH, определяют каталоги для поиска модулей.
Другие переменные среды менее значимы и могут быть экзотическими.
Cython - диалект Python, улучшающий производительность кода.
IronPython - реализация Python на платформе .NET.
PyPy использует Just-In-Time компиляторы для
Фреймворк жестко диктует условия, а библиотека предоставляет функции.
Пример: фреймворк Django диктует структуру папок, а библиотека NumPy предоставляет инструменты.
Три функции с разным порядком действий: сортировка, фильтрация, умножение.
Вторая функция быстрее, так как фильтрация отсеивает множество элементов перед сортировкой.
Для 10 миллионов чисел вторая функция быстрее на 1 секунду.
Использование профайлера для визуализации узких мест в программе.
Пример: визуализация объектов, на которые ссылается май лист.
Ошибка возникает, когда метод не реализован.
Дандер-методы позволяют перегружать стандартные операции, например, сложение и умножение.
Техника бак фисинга для замены методов.
Пример: переопределение метода для исправления проблемы.
Использование менеджеров пакетов для установки библиотек.
Пример: установка нескольких библиотек из файла.
Python подходит для быстрого прототипирования и минимально жизнеспособных проектов MVP.
Не подходит для высокопроизводительных приложений.
Метод определяет поведение экземпляра класса.
Пример использования кейсов для обработки различных условий.
Поддержка регулярных выражений в Python.
Пример: поиск электронных почт с использованием регулярных выражений.
Передача необязательных параметров с помощью звездочки.
Именованные параметры с помощью двух звездочек.
Создание директории и файлов для пакета.
Пример: создание дистрибутива и восстановление пакета с помощью pip.
Функции, которые принимают другие функции в качестве аргумента.
Примеры: map, filter, reduce.
Модуль os для работы с операционной системой.
Модуль sys для работы с аргументами командной строки.
Используется для создания генераторов.
Возвращает значение, эквивалент слова "ретерн".
Может происходить много раз, используется в цикле for.
Ссылка на блокнот и статью на Хабре в описании.
Рекомендуется просмотреть перед собеседованием.
Подписывайтесь на канал, ставьте лайки для большего контента.