Типы переменных и операций языка Python

Раздел: Основы Python -> Операторы и типы

Основные типы данных и операторы языка Python

Типы данных в Python делятся на изменяемые и неизменяемые. Основные встроенные типы: int (целые числа), float (вещественные), str (строки), bool (логические), list (списки), tuple (кортежи), dict (словари), set (множества), NoneType (тип None). Каждый тип определяет набор допустимых операций и методов.

# Примеры создания разных типов
a = 42               # int
b = 3.14             # float
c = "Привет"         # str
d = True             # bool
e = [1, 2, 3]        # list
f = (4, 5, 6)        # tuple
g = {"ключ": "значение"}  # dict
h = {7, 8, 9}        # set
i = None             # NoneType

операторы и типы данных python (операторы и типы данных в python)

Операторы выполняют действия над данными. Основные группы:

  • Арифметические: +, -, *, /, //, %, **.
  • Сравнения: ==, !=, <, >, <=, >=.
  • Логические: and, or, not.
  • Присваивания: =, +=, -=, *= и др.
  • Побитовые: &, |, ^, ~, <<, >>.
  • Членства: in, not in.
  • Тождественности: is, is not.
# Примеры операторов
print(10 // 3)   # 3
print(10 % 3)    # 1
print(2 ** 3)    # 8
print(7 > 5 and 3 < 4)  # True
print("a" in "abc")        # True
print([1, 2] is [1, 2])    # False (разные объекты)

Как выполнить целочисленное деление и получить остаток?

Для целочисленного деления (с округлением вниз) используется оператор //, для остатка от деления - %. Они работают и с отрицательными числами, при этом результат // всегда округляется в меньшую сторону (по математическому правилу).

print(7 // 2)    # 3
print(7 % 2)     # 1
print(-7 // 2)   # -4 (округление вниз)
print(-7 % 2)    # 1 (остаток положительный)

Типичные ошибки: путаница между / (вещественное деление) и //. Для вещественных чисел % тоже работает, но из-за погрешностей лучше применять math.fmod.

Как проверить вхождение элемента в строку, список или словарь?

Оператор in проверяет, содержится ли элемент в последовательности. Для словаря in проверяет наличие ключа, а не значения.

print("ло" in "молоко")               # True
print(3 in [1, 2, 3])                # True
print("age" in {"name": "Аня", "age": 25})  # True
print(25 in {"name": "Аня", "age": 25})     # False (проверка ключа)

Типичные ошибки: попытка проверить наличие значения в словаре через in - следует использовать in dict.values().

Как преобразовать тип данных?

Для явного преобразования применяются встроенные функции: int(), float(), str(), list(), tuple(), set(), dict(). При преобразовании строки в число важно, чтобы строка содержала корректное числовое представление.

print(int("42"))        # 42
print(float("3.14"))    # 3.14
print(str(100))         # "100"
print(list("abc"))      # ['a', 'b', 'c']
print(tuple([1,2,3]))   # (1,2,3)

Типичные ошибки: ValueError при попытке преобразовать нечисловую строку (напр., "12a"). Для безопасного преобразования можно использовать try/except.

Как объединить строки эффективно?

Самый простой способ - оператор +, однако при большом количестве строк каждая операция создаёт новую строку, что затратно. Метод str.join() работает быстрее, так как выделяет память один раз.

# Медленный способ
parts = ["a", "b", "c"]
s = ""
for p in parts:
    s += p          # каждое + копирует строку

# Быстрый способ
s_fast = "".join(parts)

Типичные ошибки: забыть, что join() вызывается от разделителя, а аргументом передаётся список.

Как работает оператор is для сравнения объектов?

is сравнивает идентичность объектов (их адреса в памяти), а == сравнивает значения. Для неизменяемых типов (например, маленькие целые числа) Python иногда кэширует объекты, поэтому is может вернуть True, но полагаться на это не стоит.

a = [1, 2, 3]
b = [1, 2, 3]
print(a == b)   # True
print(a is b)   # False

x = 256
y = 256
print(x is y)   # True (из-за интернирования)

Типичные ошибки: использование is для сравнения строк или чисел, когда ожидается сравнение значений. Правильно использовать is только для проверки на None (напр., if var is None).

Дополнительные примеры работы с операторами и типами данных

Побитовые операции и флаги

Побитовые операторы (&, |, ^, ~, <<, >>) обычно применяются для работы с флагами или в низкоуровневом коде. Пример упаковки прав доступа:

Пример
# Флаги: READ = 0b001; WRITE = 0b010; EXECUTE = 0b100
READ = 1
WRITE = 2
EXECUTE = 4

permissions = READ | WRITE          # 0b011 = 3
print(permissions)                  # 3

# Проверка наличия флага
if permissions & READ:
    print("Разрешено чтение")

# Установка дополнительного флага
permissions |= EXECUTE
print(permissions)                  # 7
3
Разрешено чтение
7

Оператор моржа := (walrus operator)

Позволяет присвоить значение переменной внутри выражения. Удобно в циклах и условных конструкциях.

Пример
# Пример: чтение строк до пустой строки
lines = []
while (line := input("Введите строку: ")) != "":
    lines.append(line)
print(lines)
(пример ввода: 'a', 'b', '')
['a', 'b']

Распаковка кортежей и оператор *

Python поддерживает распаковку последовательностей. Оператор * позволяет собрать оставшиеся элементы.

Пример
first, *middle, last = [1, 2, 3, 4, 5]
print(first)   # 1
print(middle)  # [2, 3, 4]
print(last)    # 5

# Распаковка вложенных структур
a, (b, c) = (10, (20, 30))
print(a, b, c) # 10 20 30
1
[2, 3, 4]
5
10 20 30

Словарные включения (dict comprehension)

Краткий способ создания словарей. Например, переворачивание словаря (меняем ключи и значения).

Пример
original = {"a": 1, "b": 2, "c": 3}
reversed_dict = {value: key for key, value in original.items()}
print(reversed_dict)  # {1: 'a', 2: 'b', 3: 'c'}
{1: 'a', 2: 'b', 3: 'c'}

Типизированные контейнеры и isinstance()

Функция isinstance() проверяет принадлежность объекта указанному классу или кортежу классов.

Пример
data = [1, "text", 3.14, []]
for item in data:
    if isinstance(item, int):
        print(f"{item} - целое")
    elif isinstance(item, str):
        print(f"{item} - строка")
    else:
        print(f"{item} - другой тип")
1 - целое
text - строка
3.14 - другой тип
[] - другой тип

Оператор not in и совместное использование с or

Проверка отсутствия элемента и комбинирование условий.

Пример
if "x" not in "example" or "y" in "yes":
    print("Условие выполнено")
Условие выполнено

Операторы и типы данных в Python - comments

En
операторы и типы данных python (python)