Вступление
00:00:00Здравствуйте, меня зовут Слава. Я ваш инженер и работаю с Python уже много лет. Сегодня мы обсудим основные вопросы, задаваемые в интервью на Python, а также более сложные.
Основы
00:00:22Введение в язык Python Документы Python служат механизмом для предложения новых возможностей или документирования существующих решений на этом языке. Они содержат рекомендации по форматированию кода и типам данных, таким как изменяемые и неизменяемые типы, включая строки, байты, целые числа, числа с плавающей запятой, комплексные числа.
Виртуальные среды на Python Виртуальные среды помогают разрешать конфликты при использовании разных версий библиотек, изолируя локальный Python от глобальной установки. Это позволяет устанавливать отдельные библиотеки, не затрагивая глобально установленную версию Python на компьютере.
Изменение элементов в кортежах Неизменяемые кортежи могут содержать изменяемые элементы, которые могут быть изменены внутри них. Однако прямое изменение неизменяемых элементов запрещено, но изменение изменяемых элементов внутри них возможно.
Сжатие понимания "Списка" Сжатие для понимания "списка" обеспечивает краткий способ создания списков на основе определенных условий или преобразований, применяемых к каждому элементу исходной коллекции.
'==' vs '- это' Операторы '==' сравнивает значения, в то время как 'is' проверяет, ссылаются ли две переменные на один и тот же объект.'==" возвращает True, если оба операнда имеют одинаковые значения; тогда как 'is" возвращает True только в том случае, если оба операнда ссылаются на один и тот же объект.
Функции
00:17:40Функции и их преимущества Функция - это именованный блок кода, который может быть вызван из другой части программы. Ее преимущество заключается в возможности повторного использования кода. Если функция не имеет оператора return, она неявно возвращает NaN. Аннотации типов служат подсказками для типа аргументов, ожидаемых функциями, но они не применяются в Python.
Передача аргументов функциям Аргументы могут передаваться функциям по ссылке или по значению. Передача аргументов по ссылке означает, что все аргументы функции передаются как ссылки, в то время как передача их по значению предполагает передачу определенных значений функции.
Лямбда-функции и рекурсия Лямбда-функции не имеют имени и выполняют короткие действия без необходимости отдельного объявления имени. Рекурсия - это когда функция вызывает саму себя; ее преимущества включают простоту структуры кода, но ограничения на использование памяти из-за ограничений глубины стека.
Классы
00:26:09Классы и объекты Класс - это модель для создания объектов определенного типа, определяющая их структуру и поведение. Объект класса - это уникальная сущность со своей собственной структурой и поведением. Методы в Python определяются с использованием параметра 'self' для доступа к атрибутам внутри объекта.
Методы класса против статических методов Методы класса принадлежат всему классу, в то время как статические методы могут вызываться как из класса, так и из его экземпляров. Статические методы по умолчанию не принимают "self" или "cls" в качестве параметров; они используют декораторы, такие как "@staticmethod". В Python нет модификаторов доступа, таких как public или private; соглашения об именовании указывают на видимость: одинарное подчеркивание для защищенных атрибутов/методов, двойное подчеркивание для закрытых.
Атрибуты в классах декоратор '@property' позволяет создавать динамические атрибуты в классах. Атрибуты класса являются общими для всех экземпляров этого класса, но могут быть изменены в любое время, не затрагивая другие экземпляры.'__dict__' содержит имена всех атрибутов, сопоставленные с их значениями в пространстве имен экземпляра.
Абстрактные классы Абстрактные классы определяют интерфейсы для подклассов, но не могут быть созданы напрямую, если абстрактные методы (помеченные '@abstractmethod') не были реализованы этими подклассами.
ООП
00:39:04Объектно-ориентированное программирование (ООП) ООП - это методология программирования, основанная на представлении объектов, каждый из которых является экземпляром определенного класса. Она включает в себя такие принципы, как абстракция, наследование, полиморфизм и инкапсуляция.
Наследование и композиция Наследование позволяет создавать новые классы на основе существующих, чтобы унаследовать их функциональность. Композиция предполагает использование некоторых классов как частей другого класса; это обеспечивает гибкость при изменении атрибутов во время выполнения.
Декораторы
00:44:13Затворы и декораторы Замыкания - это механизм, при котором одна функция использует переменные из внешней области видимости. Это позволяет функциям получать доступ к переменным из их заключающей функции, создавая форму инкапсуляции. Декоратор - это шаблон проектирования, который можно использовать для изменения поведения функций или классов без изменения их исходного кода.
Внедряющие декораторы Декораторы могут быть реализованы с помощью замыкания, которое принимает функцию внутри себя. Функция-оболочка передает аргументы в нашу исходную функцию, выполняет некоторые действия до и после вызова нашей исходной функции, добавляя дополнительное поведение по мере необходимости.
Итераторы
00:47:06Итераторы - это объекты, которые предоставляют способ последовательного перемещения по своим элементам. Они отличаются от коллекций тем, что реализуют метод "next", позволяющий получить доступ к следующему элементу по требованию. Создание итератора из коллекции включает в себя вызов функции в коллекции, а затем использование таких методов, как 'Next', для извлечения последующих элементов.
Генераторы
00:49:18Понимание генераторов в Python Генераторы в Python - это мощный инструмент, который позволяет нам создавать итераторы. Они имеют ряд преимуществ по сравнению с обычными функциями, такими как возможность вызываться по требованию и выдавать значения по одному за раз.
Генераторные выражения и результирующие значения Генераторные выражения предоставляют краткий способ создания объектов-генераторов. Эти генераторы могут использоваться в циклах или с функцией "next" для последовательного извлечения значений до тех пор, пока больше не останется значений, и в этот момент он перестает выдавать результаты.
Менеджеры контекста
00:52:51Контекстный менеджер - это конструкция, которая позволяет нам работать в определенном контексте, получая доступ к объектам и манипулируя ими. Он включает в себя два волшебных метода: Enter для действий при входе в контекст и Exit для действий при выходе или при возникновении исключения. Метод Exit принимает тип ошибки, которая произошла внутри контекста.
Исключения
00:54:34Обработка исключений в Python Исключения используются для обработки ошибок, и существует четыре блока для обработки исключений: Try, Except, Else и Finally. Каждый блок имеет определенную цель при обработке исключений.
Использование нескольких блоков Except Несколько блоков except можно использовать для обработки различных типов исключений, указав ожидаемые типы исключений в каждом блоке except. Это позволяет более точно обрабатывать ошибки в зависимости от типа возникающего исключения.
Создание и использование пользовательских исключений Создание пользовательских исключений полезно, когда вам нужно вывести информативное сообщение об ошибке, относящееся к определенной ситуации или контексту. Пользовательские исключения могут быть созданы путем наследования от базового класса исключений, такого как 'Exception', и предоставлять более подробную информацию об ошибке.
Импорты
01:01:52Модули и пакеты Python В Python модуль - это файл с расширением .py, содержащий код на Python. Пакет - это каталог, содержащий модули Python, который также может включать в себя __init__.py файл. До версии 3.3 наличие __init__.py был обязательным для существования пакета; после версии 3.3 он стал необязательным.
Импорт модулей в Python При импорте пакетов или их модулей в Python с помощью 'import' код внутри них выполняется только один раз, когда встречается в первый раз в процессе импорта. Разница между "import foo" и "from foo import bar" заключается в том, как осуществляется доступ к переменным в текущем пространстве имен.
Заключение
01:05:50Вывод: У нас нормальный импорт, ошибок нет. Сегодня мы рассмотрели основные вопросы, задаваемые в интервью на Python. В следующем видео мы рассмотрим более сложные вопросы для собеседования. Спасибо вам за ваше внимание.