
- •Теоретические вопросы
- •1. Какая реализация интерпретатора python является стандартной? Назовите популярные реализации других интерпретаторов и их особенности.
- •2. Какие парадигмы программирования поддерживает python. Кратко объясните их?
- •3/4. Что такое мутабельные и иммутабельные типы данных? Чем они отличаются? Приведите примеры мутабельных/иммутабельных типов.
- •5. Приведение стандартных типов данных к логическому. На основе чего оно работает и где принято применять?
- •6. Необходимо реализовать функцию, которая принимает переменное число аргументов. Какой инструмент python вы для этого используете? Объяснить его принцип работы.
- •7. Как использовать дефолтные аргументы функции и как их изменять? Возможные проблемы, связанные с ними.
- •8. Что такое оператор упаковки и распаковки, их сходства и отличия? Приведите примеры использования.
- •9. Как в python работает области видимости (локальный и глобальный контекст, видимость функций, тело операторов)?
- •10. Что такое lambda выражение, как оно работает и из чего строится? Напишите простейшее lambda выражение и приведите примеры, где его принято применять.
- •11. Перечислите набор встроенных в python функций, взятых из функционального программирования. Как они работают (принимаемые аргументы и результат работы), где их можно применять?
- •12. Что такое list comprehension? Реализуйте его и объясните, какие преимущества у него есть.
- •13. Что такое декоратор? На основе каких принципов python он устроен? Реализуйте простейший декоратор.
- •15. В чем отличие bound method от function? Синтаксический сахар при вызове методов у объекта класса.
- •16. Геттеры и сеттеры в python. Реализуйте класс, в котором будет одно поле и для работы с ним геттер и сеттер.
- •17. Работа со __slots__ в python. Зачем нужен данный инструмент, какие задачи выполняет, какие ограничения накладывает на объект класса и какие преимущества дает.
- •18. Реализация сокрытия полей и методов в python. Общепринятые соглашение о наименовании. Преимущества и недостатки такого подхода.
- •19. Функция super. Объяснить принцип ее работы.
- •20. Что такое “магические методы” в python? Их отличительная особенность в именовании. Какие задачи выполняют? Назвать пять штук с объяснением их работы.
- •21. Как работают getattr, setattr, hasattr и т.Д.? Как переопределить их стандартную реализацию для конкретного класса?
- •22. Множественное наследование в python. Выбор вызываемого метода. Привести пример.
- •23. Как работают функции isinstance и issubclass? При решении каких задач они могут пригодиться.
- •24. Что такое иерархия исключений в python? Объяснить принцип ее построения. Как правильно перехватить любое исключение?
- •25. Что такое иерархия исключений в python? Объяснить принцип ее построения. Реализация собственных исключений в python.
- •26. У вас есть блок try/except, который перехватывает все исключения. Как правильно вывести трейсбек, но чтобы при этом программа продолжила функционировать?
- •27. Обработка множественных исключений в python и ее корректная реализация. Как функционирует блок else в таком случае?
- •28. Что такое менеджер контекста в python? Какие задачи он выполняет при работе с различными файлами? Можно ли дублировать его работу через try/except/finally?
- •29. Что такое итератор в python? Какие два метода позволяют реализовать протокол итерации для объекта класса и что они должны возвращать?
- •30. Что такое генератор в python? Какое главное преимущество? Реализуйте простейший генератор.
- •1. Дан список из n элементов строчного типа. Удалить все элементы, состоящие из пустых строк.
Теоретические вопросы
1. Какая реализация интерпретатора python является стандартной? Назовите популярные реализации других интерпретаторов и их особенности.
СPython – стандартная реализация интерпретатора python, написанная на языке Си. Он наиболее совместим с пакетами и модулями языка.
Jython – реализация интерпретатора Python, написанная на Java и работающая на Java-платформах. Jyhton работает на виртуальной машине, использующая то же окружение, что и Java. Jython позволяет использовать функции и классы Java, что дает доступ к библиотекам и фреймворкам Java.
IronPython – реализация, написанная на C#, разработанная для работы на платформе .NET. Эта реализация дает доступ к функциям и классам C#, библиотекам и фреймворкам .NET. Так же эта реализация отлично подходит для многопоточных программ.
PyPy – реализация, написанная на Python и являющаяся альтернативой CPython. Эта реализация использует Just-In-Time компиляцию, что позволяет компилировать исходный код прямо во время выполнения программы. Это делает PyPy в несколько раз быстрее CPython.
2. Какие парадигмы программирования поддерживает python. Кратко объясните их?
Python поддерживает следующие парадигмы программирования: структурную, объектно-ориентированную, функциональную.
a. Структурное программирование подразумевает под собой разделение программы на отдельные блоки и ведение пошаговой разработки.
b. Объектно-ориентированное программирование (ООП) представляется в виде совокупности объектов, каждый из которых является экземпляром определенного класса. Классы образуют иерархию наследования. ООП базируется на принципах инкапсуляции (способность объекта скрывать внутреннее устройство своих свойств и методов), наследования (процесс приобретения одним объектом свойств другого), полиморфизма (способность объектов с одним интерфейсом иметь различную реализацию), абстракции (разделение данных на важные для решения задачи и несущественные).
c. Функциональное программирование – разработка программ, в которых единственным действием является вызов функции.
3/4. Что такое мутабельные и иммутабельные типы данных? Чем они отличаются? Приведите примеры мутабельных/иммутабельных типов.
Мутабельные типы данных - тип данных, позволяющий изменять свои свойства после создания. В Python это списки (list), словари (dict) и наборы (set).
Иммутабельный тип данных - тип данных, который не может быть изменен после создания. В Python это целые числа (int), числа с плавающей запятой (float), строки (str), байты (bytes), кортежи (tuple), диапазоны (range), нулевой (None) и булевые (bool).
5. Приведение стандартных типов данных к логическому. На основе чего оно работает и где принято применять?
В Python для приведения других типов данных к булевому типу используется функция bool(). Она вернет True, если:
Передана ненулевая строка;ч
Ненулевое число;
Не пустой список/кортеж
Чаще всего применяется для ветвлений и циклов while.
6. Необходимо реализовать функцию, которая принимает переменное число аргументов. Какой инструмент python вы для этого используете? Объяснить его принцип работы.
Для передачи в функцию переменного кол-ва аргументов используются аргументы типа *args (для неименованных аргументов) и **kwargs (для именованных аргументов).
*args нужен, когда мы хотим передать неизвестное количество неименованных аргументов. Если поставить * перед именем, это имя будет принимать не один аргумент, а несколько. Аргументы передаются как кортеж и доступны внутри функции под тем же именем, что и имя параметра, только без *.
Пример программы:
def adder(*nums): sum = 0
for n in nums: sum += n
print("Sum: ", sum)
adder(3, 5) adder(4, 5, 6, 7) adder(1, 2, 3, 5, 6) |
Результат работы программы:
Sum: 8 Sum: 22 Sum: 17 |
**kwargs используется для передачи переменного количества именованных аргументов. Схоже с *args, если поставить ** перед именем, это имя будет принимать любое количество именованных аргументов. Кортеж/словарь из нескольких переданных аргументов будет доступен под этим именем.
Пример программы:
def intro(**data): print("\nData type of argument: ",type(data))
for key, value in data.items(): print("{} is {}".format(key, value))
intro(Firstname="Sita", Lastname="Sharma", Age=22, Phone=1234567890) intro(Firstname="John", Lastname="Wood", Email="johnwood@nomail.com", Country="Wakanda", Age=25, Phone=9876543210) |
Результат работы программы
Data type of argument: <class 'dict'> Firstname is Sita Lastname is Sharma Age is 22 Phone is 1234567890
Data type of argument: <class 'dict'> Firstname is John Lastname is Wood Email is johnwood@nomail.com Country is Wakanda Age is 25 Phone is 9876543210 |