1. Что такое PEP 8?
PEP - расшифровывается как Python Enhancement Proposal. Это официальный проектный документ, предоставляющий информацию сообществу Python и описывающий новую функцию для Python или его процессов. PEP 8 важен, так как документирует руководящие принципы стиля для кода Python. То есть, для написания кода ввели определенные правила, которым рекомендуется следовать.
2. Scope в Python – какие бывают?
Объект в Python функционирует в пределах области видимости. Область видимости – это блок кода, в котором объект в Python остается актуальным. Пространства имен уникально идентифицируют все объекты внутри программы. Однако эти пространства имен также имеют определенную для них область видимости, где можно использовать их объекты без префикса. Ниже приведено несколько примеров областей видимости, создаваемых во время выполнения кода в Python:
- Local scope – относится к локальным объектам, доступным в текущей функции.
- Global scope – относится к объектам, доступным во время выполнения кода с момента их создания.
- Module-level scope - относится к глобальным объектам текущего модуля, доступным в программе.
- Outermost – относится ко всем встроенным именам, вызываемым в программе. Объекты в этой области видимости ищутся в последнюю очередь, чтобы найти имя, на которое ссылаются.
3. List и Tuples – зачем нужны и какие отличия?
List и Tuples - это типы данных, которые хранят коллекцию объектов в Python. Объекты, хранящиеся в обеих последовательностях, имеют разные типы данных. List представлены квадратными скобками ['sara', 6, 0.19]
, а tuples - круглыми скобками ('max', 5, 0.97)
.
Ключевое различие между ними заключается в том, что в то время как list является изменяемым, tuples, напротив, является неизменяемым объектом. Это означает, что данные в list могут быть изменены, добавлены или нарезаны на ходу, а в tuples остаются неизменными и не могут быть изменены никаким образом.
Пример использования:
4. Что такое pass в Python?
Pass - представляет собой нулевую операцию в Python. Обычно она используется для заполнения пустых блоков кода, который может выполняться во время исполнения. В примере, приведенном ниже, без оператора pass
можно столкнуться с ошибкой как <<IndentationError>>
во время выполнения кода.
5. Что такое модули и пакеты в Python?
Модули - это файлы Python с расширением <<.py>>
, в которых определены и реализованы наборы функций, классов или переменных. Они могут быть импортированы и инициализированы один раз с помощью оператора import
. Если требуется частичная функциональность, необходимые классы или функции импортируются с помощью оператора from foo import bar
.
Пакеты позволяют иерархически структурировать пространство имен модуля с помощью точечной нотации. Как модули помогают избежать столкновений между именами глобальных переменных, так и пакеты помогают избежать столкновений между именами модулей. Создать пакет просто, поскольку он использует присущую системе файловую структуру. Пакет создается как папка в файловой системе и помещается необходимый модуль (файл python). Импорт модуля или его содержимого из пакета требует, чтобы имя пакета был префиксом к имени модуля, соединенным точкой. Подробнее на здесь.
Пакеты и модули – это два механизма, позволяющие осуществлять модульное программирование в Python. Модульное программирование имеет несколько преимуществ:
- Простота: Работа над одним модулем позволяет сосредоточиться на относительно небольшой части проблемы. Это делает разработку более простой и менее подверженной ошибкам.
- Удобство обслуживания: Модули предназначены для обеспечения логических границ между различными проблемными областями. Если они написаны таким образом, что уменьшают взаимозависимость, то меньше вероятность того, что изменения в модуле могут повлиять на другие части программы.
- Возможность повторного использования: Функции, определенные в модуле, могут быть легко использованы повторно в других частях приложения.
- Разметка: Модули обычно определяют отдельное пространство имен, что помогает избежать путаницы между идентификаторами из других частей программы.
6. Какие отличия между массивом и списком в Python?
Массивы содержат только элементы одинаковых типов данных, то есть тип данных массива должен быть однородным. Массивы потребляют меньше памяти.
Списки содержат элементы разных типов данных, то есть тип данных списков может быть неоднородным. Их недостатком является потребление большого объема памяти.
Пример использования массива и списка:
7. Отрицательное значение индексов в Python
Отрицательное значение индексов в Python является популярным использованием slicing (вырезок) коллекций и массивов. То есть индексацией можно пользоваться для создания вырезок из коллекций.
Синтаксис – [start : stop : step]
:
start
– с какого индекса нужно начинать (может быть отрицательным)stop
– на каком месте остановитсяstep
– количество шагов для перехода. По умолчанию1
.
8. Как управляется память в Python?
В Python оператор присваивания (=
) не копирует объекты. Вместо этого он создает связь между существующим объектом и именем целевой переменной. Чтобы создать копии объекта в Python, необходимо использовать модуль copy
. Более того, существует два способа создания копий для данного объекта с помощью модуля copy
.
- Shallow Copy – это побитовая копия объекта. Созданный скопированный объект имеет точную копию значений в исходном объекте. Если одно из значений является ссылкой на другие объекты, копируются только адреса ссылок на них.
- Deep Copy – рекурсивно копирует все значения от исходного объекта к целевому, т. е. дублирует даже объекты, на которые ссылается исходный объект.
Пример использования сopy
и deepcopy
:
10. Как делается перегрузка операторов в Python?
Перегрузка оператора – это возможность переопределять различные операторы в классах, то есть менять операции, которые они выполняют, в зависимости от контекста. В Python есть операторы такие как: сложение, вычитание и т. д., которые можно перегрузить для класса.
Пример использования:
В примере показано использование перезагрузки операторов. Данные методы не вызываются напрямую, но вызываются встроенными функциями или операторами.
11. Как передаются аргументы – значения или ссылка?
В Python аргументы передаются по ссылке, т. е. передается ссылка на реальный объект. Но есть два вида передачи объекта в аргументах.
По значению: Передается копия реального объекта. Изменение значения копии объекта не приведет к изменению значения исходного объекта.
По ссылке: Передается ссылка на реальный объект. Изменение значения нового объекта изменит значение исходного объекта.
Пример использования:
12. Что такое *args и *kwargs?
*args
– это специальный синтаксис, используемый в определении функции для передачи аргументов переменной длины.
*
– означает переменную длину, а args
– это название принятое в PEP 8, но можно использовать любое другое название
Пример использования:
**kwargs
– это специальный синтаксис, используемый в определении функции для передачи аргументов переменной длины с ключевыми словами. На самом деле, это dictionary
который имеет key
и value
.
Пример использования:
13. Пустой класс и как он используется?
Пустой класс – класс, который не имеет реализацию каких-то методов или же свойств. При пустом классе используется ключевое слово pass для того, чтобы не выдавало ошибок.
Пример использования:
14. Используются ли в python спецификаторы доступа?
Python не использует спецификаторы доступа, такие как private
, public
, protected
и т. д. Однако, в нем есть концепция имитации поведения переменных путем использования одинарного (protected
) или двойного подчеркивания (private
) в качестве префикса к именам переменных. По умолчанию переменные без подчеркивания являются общедоступными.
Пример использования:
15. Написать алгоритм (несколько примеров)
- Напишите программу для объединения двух разных словарей. При объединении, если вы найдете одинаковые ключи, вы можете добавить значения этих ключей. Выведите новый словарь
- Напишите программу для проверки и возврата пар заданного массива
A
, суммарное значение которых равно заданному значениюN
.
Комментарии