Python Junior Flashcards
Python - интерпретируемый язык или компилируемый?
Python является интерпретируемым языком с компиляцией в промежуточный байт-код, который затем интерпретируется и выполняется.
Этот подход сочетает в себе преимущества интерпретации (гибкость, динамическая типизация) с некоторыми преимуществами компиляции (более быстрое выполнение благодаря использованию байт-кода).
Какие есть меняющиеся и постоянные типы данных? (mutable & immutable)
Изменяемые
- list
- set
- dict
Неизменяемые
- int
- float
- str
- tuple
- frozenset
Мутабельные (изменяемые) и иммутабельные (неизменяемые) типы данных определяются по их способности изменяться после создания.
Что такое область видимости переменных?
Суть: Глобальная - доступна везде. Локальная - внутри функции.
В чем разница между процессами и потоками?
Суть: процессы - это отдельные выполнения программы, каждое со своим набором инструкций и данными, а потоки - это параллельные выполнения внутри процесса, разделяющие общие ресурсы.
Какие есть виды импорта?
Абсолютный и относительный импорт
* Абсолютный - полный путь (от начала корневой папки проекта) к желаемому модулю.
* Относительный - относительный путь (начиная с пути текущего модуля) к желаемому модулю.
Абсолютные импорты:
~~~
import other
import packA.a2
import packA.subA.sa1
~~~
Явные относительные импорты:
~~~
import other
from . import a2
from .subA import sa1
~~~
Как правило, абсолютные импорты предпочтительнее относительных. Они позволяют избежать путаницы между явными и неявными импортами. Кроме того, любой скрипт с явными относительными импортами нельзя запустить напрямую:
Что такое итератор?
Итераторы — используются для перебора группы элементов (например, в списке).
Что такое генератор?
Генераторы — представляют собой способ реализации итераторов. В них применяется yield для возврата выражения из функции, но в остальном генератор ведет себя как обычная функция.
В чем разница между итераторами и генераторами?
Суть: Итераторы для перебора группы элементов (например, в списке).
Генераторы это способ реализации итераторов. Возврат выражения из функции происходит через yield.
Что такое метакласс?
В python все состоит из объектов. И для создания классов используются другие классы - метаклассы. По умолчанию для всех классов метаклассом является type
В чем разница между classmethod и staticmethod?
classmethod
и staticmethod
- это декораторы, позволяющие определять методы в классах с особым поведением.
Основное отличие между classmethod
и staticmethod
заключается в том, что classmethod
принимает ссылку на класс, а staticmethod
- нет.
classmethod
Суть: обычный метод, у которого есть доступ ко всем атрибутам класса. Получает класс в качестве первого аргумента.
@classmethod – это метод, который получает класс в качестве неявного первого аргумента, точно так же, как обычный метод экземпляра получает экземпляр. Это означает, что вы можете использовать класс и его свойства внутри этого метода, а не конкретного экземпляра.
Проще говоря, @classmethod – это обычный метод класса, имеющий доступ ко всем атрибутам класса, через который он был вызван. Следовательно, classmethod – это метод, который привязан к классу, а не к экземпляру класса.
staticmethod
Суть: аналогично обычной функции вне класса, можно использовать без создания экземпляра класса. Не получает класс в качестве первого аргумента.
@staticmethod – используется для создания метода, который ничего не знает о классе или экземпляре, через который он был вызван. Он просто получает переданные аргументы, без неявного первого аргумента, и его определение неизменяемо через наследование.
Проще говоря, @staticmethod – это вроде обычной функции, определенной внутри класса, которая не имеет доступа к экземпляру, поэтому ее можно вызывать без создания экземпляра класса.
Как работают декораторы, контекстные менеджеры?
Суть:
- Декоратор это функция расширяющая возможности функции. Принимает в качестве аргумента функцию. Синтаксичский сахар для функций высшего порядка
- Контекстный менеджер функция with автоматически управляет входом и выходом из определенного контекста.
Как работают dict comprehension, list comprehension и set comprehension?
Синтаксис list comprehension выглядит следующим образом:
[выражение for элемент in последовательность if условие]
или в расширенной форме:
[выражение for элемент in последовательность]
где:
-
выражение
- это выражение, которое будет применено к каждому элементу последовательности. -
элемент
- это переменная, представляющая текущий элемент последовательности. -
последовательность
- это исходная последовательность, по которой будет проходить итерация. -
условие
(необязательно) - это условие, которое фильтрует элементы последовательности.
Примеры использования list comprehension:
- Создание списка квадратов чисел от 0 до 9:
squares = [x**2 for x in range(10)]
- Фильтрация списка, оставляя только четные числа:
even_numbers = [x for x in range(10) if x % 2 == 0]
- Преобразование списка строк в список их длин:
strings = ["apple", "banana", "orange"]
lengths = [len(s) for s in strings]
Можно ли использовать несколько декораторов для одной функции?
Да, в Python можно применять несколько декораторов к одной функции.
Декораторы применяются сверху вниз, то есть последний декоратор, указанный над функцией, будет выполнен первым.