Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Билеты ВвИТ, СиСС, Экзамен 3 сем, 2021.docx
Скачиваний:
33
Добавлен:
21.01.2022
Размер:
41.28 Кб
Скачать

Теоретические вопросы

1. Какая реализация интерпретатора python является стандартной? Назовите популярные реализации других интерпретаторов и их особенности.

  1. СPython – стандартная реализация интерпретатора python, написанная на языке Си. Он наиболее совместим с пакетами и модулями языка.

  2. Jython – реализация интерпретатора Python, написанная на Java и работающая на Java-платформах. Jyhton работает на виртуальной машине, использующая то же окружение, что и Java. Jython позволяет использовать функции и классы Java, что дает доступ к библиотекам и фреймворкам Java.

  3. IronPython – реализация, написанная на C#, разработанная для работы на платформе .NET. Эта реализация дает доступ к функциям и классам C#, библиотекам и фреймворкам .NET. Так же эта реализация отлично подходит для многопоточных программ.

  4. 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