Python Flashcards

1
Q

Типы данных (какие бывают)

A

Изменяемые
список (list), множество (set), словарь (dict), [байтовый массив (byte arrays)]

Не изменяемы
string, int, bool, float, кортеж (tuple)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Итератор. Что это. Какие методы содержит

A

Итератор (iterator) - это объект, который возвращает свои элементы по одному за раз.

С точки зрения Python - это любой объект, у которого есть метод __next__. Этот метод возвращает следующий элемент, если он есть, или возвращает исключение StopIteration, когда элементы закончились.

В Python у каждого итератора присутствует метод __iter__ - то есть, любой итератор является итерируемым объектом. Этот метод просто возвращает сам итератор.

А так же __init__ .

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Сложность алгоритмов
Какие бывают O ()
Расположить по порядку (возрастание)

A
О(1)
О(log n)
О(n)
О(n * log n)
О(n ^ 2)
О(2 ^ n)
О(n!)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Чем отличаются операторы == и is

A

== - сравнивает по значению

is - сравнивает по адресам в памяти

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Как в python передаются аргументы в функции (изменяемые, неизменяемые)

A

Изменяемые по ссылкам, неизменяемые по значению

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Что такое args и kwargs. Чем они представлены

A

args - это такой аргумент, который принимает в себя неограниченное количество позиционных аргументов (tuple)(кортеж)

kwargs - это такой аргумент, который принимает в себя неограниченное количество аргументов которые передаются с помощью ключевых слов (dict)(словарь)

args и kwargs - это необязательные названия, просто так принято

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Что такое аннотации типов, зачем они нужны, когда они выполняются

A

Аннотация типов - это подсказки типов к аргументу функции, переменной итд

Когда используются - не исполняются в runtime. (python на них не смотрит)

Нужны, чтобы программисту было понятно какой тип данных ожидаем.
В IDE подсвечивается, если не тот тип данных

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Что такое lambda функция и кейсы ее применения

A

lambda функция - это анонимная функция (без имени и объявления)

применяется например в map/reduce/filter. Где функция принимает другую как аргумент

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Что такое тернарный оператор

A

Это if, который записывается в одну строку

result = ‘Чётное’ if x % 2 == 0 else ‘Нечётное’

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Что такое глубокая и поверхностная копия? Зачем нужны? Как их сделать?

A

deepcopy - копирует полностью весь объект (from copy import deepcopy). Рекурсивно перебивает все ссылки на новые

copy - не копирует внутренние объекты

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Что такое self?

A

self - это ссылка на текущий\созданный объект

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Как в pyhon реализуются методы объекта, класса и статические методы? Чем отличаются

A
class A:
      def a(self):
          это метод объекта. Он доступен только в объекте
      @classmethod 
      def b(cls):
           это метод класса. он описывает класс и доступен в нём. 
   @staticmethod
   def c():
        статический метод не принадлежит ни классу ни объекту. 
        Но он связан по смыслу
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Что такое декоратор? И как реализуется?

A

Декоратор - это паттерн проектирования. По канону он реализуется через класс. С помощью этого класса меняется поведение какого-либо кода, не изменяя сам код

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Что такое абстрактный класс? Зачем они? Как реализуются?

A

Абстрактный класс - это класс у которого нельзя создать объект.
Нужны, так как в python нет интерфейсов для контрактов между классами (в виде абстр. методав)

from abc import ABS, abstractmethod

class A(ABS):
           @abstractmethod
           def bstrmeth():
                  pass
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Что такое метаклассы? Зачем используются? Как реализуются? Какие методы имеют?

A

Метаклассы - это шаблоны для классов. На их основе строятся классы. Используются для перехвата создания класса и изменения его.
__new__, __init__, __prepare__, __call__

Чаще всего переопределяется __new__

from abs import ABCMeta

class OneMeta(ABCMeta) - для абстрактного метакласа
class Meta(type)  - просто метакласс
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Что такое ООП?

A

ООП - это такая парадигма объектно-ориентированного программирования, когда мы код выстраиваем в виде объектов, которые являются объектами классов, а классы выстраивают иерархию наследования.

Наследование - один класс строится на основе другого класса. Дочерний класс получает весь функционал родительского.

Инкапсуляция - понимается двояко: фундаментально, мы в класс должны поместить(инкапсулировать) все методы, которые связаны общей идеей.
Второй тип: сокрытие данных. В классе преимущественно должны быть приватные атрибуты, ничего не выходит наружу.

Полиморфизм - 1. В функциях нам не важны типы данных приходящие из вне, главное чтобы внутри функции этот аргумент имел все действия, которые мы с ним производим.
2. Используем одни и те же имена(переопределяем) модифицируя их функционал.

+ Абстракция - в коде используются только те характеристики объекта, которые нам важны в данном коде.

17
Q

Что такое миксины?

A

Реализуют небольшой функционал, повторяющийся в многих классах.

Реализует принцип DRY

18
Q

Что такое dimonf problem? Что такое MRO?

A

Python поддерживает множественное наследование

MRO - Method Resolution Ordering -жесткий порядок зависимостей наследования. Это список, который содержится внутри класса Class.mro()

19
Q

Что такое генератор? Как написать на Python генератор?

A

Генератор - это функция у которой вместо return yield. Она может принимать и отдавать контроль управления.

20
Q

Что такое итератор? Что такое итерируемый объект?

A

Итератор - это такая структура данных, которая отдаёт что-либо по одному.

Итерируемый объект - это такой объект по которому можно пройтись по одному.

__init__
__iter__ - ссылка на итератор
__next__ - следующий объект

21
Q

Что такое генератор? Как написать на Python генератор?

A

Генератор - это функция у которой вместо return - yield. Она может принимать и отдавать контроль управления.

Работает от yield к yield.

В конце исключение StopItterator

Любой генератор -> итератором

22
Q

Что такое корутина?

A

Корутина - это генератор, с возможностью посылать в него данные с помощью метода send

23
Q

Что такое async await?

A
24
Q

Что такое async await?

A

Библиотека для Асинхронного кода: asyncio, threading, multiprocessing

threading - делим потоки в рамках одного процесса

multiprocessing - запускаем программу в разных процессах не зависимых

asyncio - принесла event loop - содержит событийный цикл, который проходится по таскам (корутинам)

25
Q

Что такое Event Loop?

A

В asyncio event loop (цикл обработки событий) управляет планированием и передачей ожидаемых объектов. event loop требуется для использования awaitables. Каждая программа asyncio имеет как минимум один event loop. Можно иметь несколько event loop, но в Python 3.7 настоятельно рекомендуется использовать только один event loop.

26
Q

Какие бывают виды тестов?

A

Unittest - модульные - пишут сами программисты. Тестируют классы функции - мелкий кусок.

Функциональные - писать могут так же программисты. Тестируют пакеты, связки компонентов,

Интеграционные - проверяет может ли проект работать в данном окружении. Доступы к API итд

27
Q

Какие есть инструменты для тестирования?

A

Встроен unittest. Не pep8 frienly

pytest - широкий функционал, фикстуры, тестовые кейсы - это функции

28
Q

Что такое mock? Зачем нужен?

A

Используется, для избежания вызовов, запросов. Mock подменяет объект на тестовый, который возвращает ожидаемый результат

pytest-mock

29
Q

Что такое ORM?

A

Объектно-реляционное отображение. Есть БД, есть код, а ORM связывает это всё.