Python Flashcards
Типы данных (какие бывают)
Изменяемые
список (list), множество (set), словарь (dict), [байтовый массив (byte arrays)]
Не изменяемы
string, int, bool, float, кортеж (tuple)
Итератор. Что это. Какие методы содержит
Итератор (iterator) - это объект, который возвращает свои элементы по одному за раз.
С точки зрения Python - это любой объект, у которого есть метод __next__. Этот метод возвращает следующий элемент, если он есть, или возвращает исключение StopIteration, когда элементы закончились.
В Python у каждого итератора присутствует метод __iter__ - то есть, любой итератор является итерируемым объектом. Этот метод просто возвращает сам итератор.
А так же __init__ .
Сложность алгоритмов
Какие бывают O ()
Расположить по порядку (возрастание)
О(1) О(log n) О(n) О(n * log n) О(n ^ 2) О(2 ^ n) О(n!)
Чем отличаются операторы == и is
== - сравнивает по значению
is - сравнивает по адресам в памяти
Как в python передаются аргументы в функции (изменяемые, неизменяемые)
Изменяемые по ссылкам, неизменяемые по значению
Что такое args и kwargs. Чем они представлены
args - это такой аргумент, который принимает в себя неограниченное количество позиционных аргументов (tuple)(кортеж)
kwargs - это такой аргумент, который принимает в себя неограниченное количество аргументов которые передаются с помощью ключевых слов (dict)(словарь)
args и kwargs - это необязательные названия, просто так принято
Что такое аннотации типов, зачем они нужны, когда они выполняются
Аннотация типов - это подсказки типов к аргументу функции, переменной итд
Когда используются - не исполняются в runtime. (python на них не смотрит)
Нужны, чтобы программисту было понятно какой тип данных ожидаем.
В IDE подсвечивается, если не тот тип данных
Что такое lambda функция и кейсы ее применения
lambda функция - это анонимная функция (без имени и объявления)
применяется например в map/reduce/filter. Где функция принимает другую как аргумент
Что такое тернарный оператор
Это if, который записывается в одну строку
result = ‘Чётное’ if x % 2 == 0 else ‘Нечётное’
Что такое глубокая и поверхностная копия? Зачем нужны? Как их сделать?
deepcopy - копирует полностью весь объект (from copy import deepcopy). Рекурсивно перебивает все ссылки на новые
copy - не копирует внутренние объекты
Что такое self?
self - это ссылка на текущий\созданный объект
Как в pyhon реализуются методы объекта, класса и статические методы? Чем отличаются
class A: def a(self): это метод объекта. Он доступен только в объекте
@classmethod def b(cls): это метод класса. он описывает класс и доступен в нём.
@staticmethod def c(): статический метод не принадлежит ни классу ни объекту. Но он связан по смыслу
Что такое декоратор? И как реализуется?
Декоратор - это паттерн проектирования. По канону он реализуется через класс. С помощью этого класса меняется поведение какого-либо кода, не изменяя сам код
Что такое абстрактный класс? Зачем они? Как реализуются?
Абстрактный класс - это класс у которого нельзя создать объект.
Нужны, так как в python нет интерфейсов для контрактов между классами (в виде абстр. методав)
from abc import ABS, abstractmethod
class A(ABS): @abstractmethod def bstrmeth(): pass
Что такое метаклассы? Зачем используются? Как реализуются? Какие методы имеют?
Метаклассы - это шаблоны для классов. На их основе строятся классы. Используются для перехвата создания класса и изменения его.
__new__, __init__, __prepare__, __call__
Чаще всего переопределяется __new__
from abs import ABCMeta
class OneMeta(ABCMeta) - для абстрактного метакласа class Meta(type) - просто метакласс