Какие бывают типы данных в python?

В python типы данных можно разделить на 2 группы: Неизменяемые: int, float, string, bool, NoneType, tuple, frozenset Изменяемые: list, dict, set

Какой механизм неизменяемости типов данных?

Механизм неизменяемости (immutability) типов данных в Python заключается в том, что объекты этих типов не могут быть изменены после создания. Когда вы пытаетесь изменить значение объекта неизменяемого типа, создается новый объект вместо модификации существующего. Это обеспечивает надежность и предсказуемость в работе с данными. Например, когда вы конкатенируете строки или выполняете арифметические операции с числами, вы создаете новые объекты, а исходные данные остаются неизменными.

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

== сравнивает 2 операнда по значениям, а is по адресам в памяти

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

Неизменяемые передаются по значению, а изменяемые по ссылке Параметры по умолчанию python высчитывает во время компиляции кода!!

def some_foo(some_args: list = []):
    some_args.append(1)
    return some_args

print(some_foo())   # [1]
print(some_foo())   # [1, 1]
print(some_foo())   # [1, 1, 1]

Что такое args и kwargs?

args — такой аргумент, который принимает в себя неограниченной количество позиционных аргументов функции kwargs — аргумент, который принимает в себя неограниченное количество аргументов, с помощью ключевых слов argstuple kwargsdict args и kwargs — не обязательное название (просто название)

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

Аннотации типов — подсказка типа данных к аргументу, переменной итд указывается после названия и двоеточия Используется в функциях, классах итд Аннотации не выполняются в runtime (то есть, если передадим аргумент другого типа, ошибки не будет). Обычно нужны для линтера и другого программиста. Единственный кейс, когда аннотации проверяют тип — различные библиотеки типа pydantic Статья на habr

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

Lambda функция — это анонимная функция (без имени). Функция может принять неограниченное количество аргументов и в функции содержится неявный return

from functools import reduce

lst = [1, 2, 3]
print(list(map(lambda x: x + 1, lst)))      # [2, 3, 4]
print(list(filter(lambda x: x % 2, lst)))   # [1, 3]
print(reduce(lambda x, y: x + y, lst, 1))   # 7
print(reduce(lambda x, y: x + y, lst, 10))  # 16

Что такое тернарный оператор? Как записывается?

Тернарный оператор — ветвление в 1 строку для лаконичности синтаксиса

some = True
res = 1 if some else 0
print(res)  # 1