Python Junior Flashcards

1
Q

Python - интерпретируемый язык или компилируемый?

A

Python является интерпретируемым языком с компиляцией в промежуточный байт-код, который затем интерпретируется и выполняется.

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

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

Какие есть меняющиеся и постоянные типы данных? (mutable & immutable)

A

Изменяемые

  • list
  • set
  • dict

Неизменяемые

  • int
  • float
  • str
  • tuple
  • frozenset

Мутабельные (изменяемые) и иммутабельные (неизменяемые) типы данных определяются по их способности изменяться после создания.

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

Что такое область видимости переменных?

A

Суть: Глобальная - доступна везде. Локальная - внутри функции.

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

В чем разница между процессами и потоками?

A

Суть: процессы - это отдельные выполнения программы, каждое со своим набором инструкций и данными, а потоки - это параллельные выполнения внутри процесса, разделяющие общие ресурсы.

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

Какие есть виды импорта?

A

Абсолютный и относительный импорт
* Абсолютный - полный путь (от начала корневой папки проекта) к желаемому модулю.
* Относительный - относительный путь (начиная с пути текущего модуля) к желаемому модулю.

Абсолютные импорты:
~~~
import other
import packA.a2
import packA.subA.sa1
~~~

Явные относительные импорты:
~~~
import other
from . import a2
from .subA import sa1
~~~

Как правило, абсолютные импорты предпочтительнее относительных. Они позволяют избежать путаницы между явными и неявными импортами. Кроме того, любой скрипт с явными относительными импортами нельзя запустить напрямую:

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

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

A

Итераторы — используются для перебора группы элементов (например, в списке).

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

Что такое генератор?

A

Генераторы — представляют собой способ реализации итераторов. В них применяется yield для возврата выражения из функции, но в остальном генератор ведет себя как обычная функция.

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

В чем разница между итераторами и генераторами?

A

Суть: Итераторы для перебора группы элементов (например, в списке).

Генераторы это способ реализации итераторов. Возврат выражения из функции происходит через yield.

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

Что такое метакласс?

A

В python все состоит из объектов. И для создания классов используются другие классы - метаклассы. По умолчанию для всех классов метаклассом является type

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

В чем разница между classmethod и staticmethod?

A

classmethod и staticmethod - это декораторы, позволяющие определять методы в классах с особым поведением.

Основное отличие между classmethod и staticmethod заключается в том, что classmethod принимает ссылку на класс, а staticmethod - нет.

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

classmethod

A

Суть: обычный метод, у которого есть доступ ко всем атрибутам класса. Получает класс в качестве первого аргумента.

@classmethod – это метод, который получает класс в качестве неявного первого аргумента, точно так же, как обычный метод экземпляра получает экземпляр. Это означает, что вы можете использовать класс и его свойства внутри этого метода, а не конкретного экземпляра.

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

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

staticmethod

A

Суть: аналогично обычной функции вне класса, можно использовать без создания экземпляра класса. Не получает класс в качестве первого аргумента.

@staticmethod – используется для создания метода, который ничего не знает о классе или экземпляре, через который он был вызван. Он просто получает переданные аргументы, без неявного первого аргумента, и его определение неизменяемо через наследование.

Проще говоря, @staticmethod – это вроде обычной функции, определенной внутри класса, которая не имеет доступа к экземпляру, поэтому ее можно вызывать без создания экземпляра класса.

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

Как работают декораторы, контекстные менеджеры?

A

Суть:

  • Декоратор это функция расширяющая возможности функции. Принимает в качестве аргумента функцию. Синтаксичский сахар для функций высшего порядка
  • Контекстный менеджер функция with автоматически управляет входом и выходом из определенного контекста.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Как работают dict comprehension, list comprehension и set comprehension?

A

Синтаксис list comprehension выглядит следующим образом:

[выражение for элемент in последовательность if условие]
или в расширенной форме:

[выражение for элемент in последовательность]
где:

  • выражение - это выражение, которое будет применено к каждому элементу последовательности.
  • элемент - это переменная, представляющая текущий элемент последовательности.
  • последовательность - это исходная последовательность, по которой будет проходить итерация.
  • условие (необязательно) - это условие, которое фильтрует элементы последовательности.

Примеры использования list comprehension:

  1. Создание списка квадратов чисел от 0 до 9:
    squares = [x**2 for x in range(10)]
  2. Фильтрация списка, оставляя только четные числа:
    even_numbers = [x for x in range(10) if x % 2 == 0]
  3. Преобразование списка строк в список их длин:
    strings = ["apple", "banana", "orange"]
    lengths = [len(s) for s in strings]
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Можно ли использовать несколько декораторов для одной функции?

A

Да, в Python можно применять несколько декораторов к одной функции.

Декораторы применяются сверху вниз, то есть последний декоратор, указанный над функцией, будет выполнен первым.

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

Что такое lambda-функции?

A

Это анонимные функции, которые могут быть созданы и использованы в одной строке кода.

Лямбды часто передают в функции map, reduce, filter.

17
Q

Можно ли создать декоратор из класса?

A

Да, в Python можно создавать декораторы из класса. Для этого класс должен определить методы \_\_init\_\_ (конструктор) и \_\_call\_\_, который будет вызван при применении декоратора к функции.

18
Q

Что такое exceptions, <try-except>?

A

Обработка исключений. Пробуем выполнить какой-то код, если он выполняется успешно, то после finally продолжаем идти по программе. Если получили исключение, то обрабатываем его в except.

19
Q

Что такое PEP (Python Enhancement Proposal), какие из них знаете (PEP 8, PEP 484)?

A

PEP - Python Enhancement Proposals - база всех предложений как улучшить Python и что изменить.
PEP8 - руководство по написанию кода на Python.

20
Q

Какие есть типы данных?

A
  • Mutable
  • Immutable
  1. Числа (int, float)
  2. Строки (str)
  3. Списки (list, tuple, set, frozenset)
  4. Словари (dict)
  5. Файлы
  6. Boolean
21
Q

Какая разница между list и tuple, зачем они?

A
22
Q

Как использовать встроенные коллекции (list, set, dictionary)?

A

List (список):
- Создание списка: mylist = [1, 2, 3, 4, 5]
- Добавление элемента в конец списка: mylist.append(6)
- Получение элемента по индексу: mylist[2]
- Изменение элемента по индексу: mylist[0] = 10
- Удаление элемента по значению: mylist.remove(3)

Set (множество):
- Создание множества: myset = {1, 2, 3, 4, 5}
- Добавление элемента в множество: myset.add(6)
- Проверка наличия элемента в множестве: print(3 in myset)
- Удаление элемента из множества: myset.remove(4)

Dictionary (словарь):
- Создание словаря: mydict = {‘a’: 1, ‘b’: 2, ‘c’: 3}
- Получение значения по ключу: print(mydict[‘b’])
- Добавление новой пары ключ-значение: mydict[‘d’] = 4
- Изменение значения по ключу: mydict[‘a’] = 10
- Удаление элемента по ключу: del mydict[‘c’]

23
Q

Как создается объект в Python, для чего new, зачем init?

A

Это методы __init__ и __new__ , которые автоматически вызывается при создании объектов.

__new__ – Это первый метод, который будет вызван при инициализации объекта. Он принимает в качестве параметров класс и потом любые другие аргументы, которые будут переданы в __init__ . __new__ используется весьма редко, но иногда бывает полезен, в частности, когда класс наследуется от неизменяемого (immutable) типа, такого как кортеж (tuple) или строка

__init__ – Инициализатор класса. Ему передаётся всё, с чем был вызван первоначальный конструктор

24
Q

В чем заключается сложность доступа к элементам dict?

A

Dict - это набор пар ключ+значение. Доступ к значению происходит через указание ключа.

Доступ к ключам происходит через метод .key() и их перебор через for loop.

thisdict = {
  "brand": "Ford",
  "model": "Mustang",
  "year": 1964
}

thisdict["brand"]

25
Q

Проверка пересечения множеств (sets)

A

set1.intersection(set2)

26
Q

Вычитание множеств (sets)

A

s3 = s1 - s2 - вычесть одно множество из другого

27
Q

Конвертация списка в множество и обратно для удаления дубликатов

A

list(set([1, 2, 3, 4, 5, 6, 6, 5, 4]))

28
Q

Словари - dict

Python

A

d = {”key”: “value”, "key2": "value2"}

user1[”name”] - обращение по ключу к значению

Функции

  • users.items() - Возвращает пары (ключ, значение) для каждого элемента словаря.
  • users.values()
  • users.keys()