Все типы данных в Python

Раздел: Python -> Основы языка Python

Основные типы данных в Python

Как определить тип данных переменной в Python?

Основным способом является встроенная функция type(). Она возвращает объект типа, а для сравнения типов рекомендуется использовать isinstance(), которая учитывает наследование.


x = 42
print(type(x))  # <class 'int'>
print(isinstance(x, int))  # True

что делает strip в python (метод strip() в python)

Такой подход подходит для большинства ситуаций, когда нужно проверить или получить тип.

В качестве альтернативы можно обратиться к атрибуту __class__ объекта или использовать модуль typing для статической проверки. Например:


x = 3.14
print(x.__class__)  # <class 'float'>
from typing import get_type_hints

математические примеры python (математические примеры в python)

Однако прямой доступ к __class__ считается менее предпочтительным, так как он нарушает инкапсуляцию.

Типичная ошибка: сравнение типа через type(x) == int не работает для подклассов. Если класс наследуется от int, такая проверка вернет False, в то время как isinstance(x, int) вернет True. Решение - всегда использовать isinstance.

Как работают числовые типы int, float и complex?

В Python есть три встроенных числовых типа: целые числа (int), числа с плавающей запятой (float) и комплексные числа (complex). Целые числа имеют неограниченную точность. Примеры:


a = 10          # int
b = 3.14        # float
c = 2 + 3j      # complex
print(a + b)    # 13.14
print(c.real, c.imag)  # 2.0 3.0

новые возможности условного оператора python (новые возможности условного оператора в python)

Для работы с дробями высокой точности можно использовать модуль decimal.Decimal, а для рациональных чисел - fractions.Fraction:


from decimal import Decimal
from fractions import Fraction
d = Decimal('0.1') + Decimal('0.2')  # 0.3, а не 0.30000000000000004
f = Fraction(1, 3) + Fraction(1, 6)  # 1/2

Float python пример (примеры float в python)

Типичная ошибка: сложение int и str вызывает TypeError. Также арифметика с float может давать неожиданные округления из-за двоичного представления. Решение - использовать Decimal для финансовых расчетов и явно преобразовывать типы.

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

Строки (str) - неизменяемый тип. Они поддерживают множество методов: lower(), upper(), split(), join() и другие. Создание строк:


s = 'Hello, world!'
print(s.upper())          # HELLO, WORLD!
print(s.split(','))       # ['Hello', ' world!']
print(' - '.join(['a','b']))  # a - b

Python кортежи примеры (примеры кортежей в python)

Другие способы форматирования: f-строки (рекомендуются), метод format() и оператор %. Пример:


name = 'Alice'
age = 30
print(f'Имя: {name}, Возраст: {age}')
print('Имя: {}, Возраст: {}'.format(name, age))
print('Имя: %s, Возраст: %d' % (name, age))

словарь в python пример (примеры словарей в python)

Типичная ошибка: попытка изменить строку по индексу (например, s[0] = 'H') вызывает TypeError. Для изменения строки нужно создать новую. Также следует избегать конкатенации в цикле - лучше использовать список и join.

Какие бывают коллекции: list, tuple, set, dict?

Список (list) - изменяемая упорядоченная коллекция. Кортеж (tuple) - неизменяемый упорядоченный. Множество (set) - неупорядоченная коллекция уникальных элементов. Словарь (dict) - отображение ключ-значение. Примеры:


lst = [1, 2, 3]
tup = (1, 2, 3)
st = {1, 2, 3}
dct = {'a': 1, 'b': 2}
print(lst[0], tup[1], st, dct['a'])

является ли число четным python (проверка числа на четность в python)

Альтернативные конструкции: списковые включения ([x**2 for x in range(5)]), кортежи без скобок, frozenset (неизменяемое множество), словарные включения. Пример:


squares = [x**2 for x in range(5)]  # [0,1,4,9,16]
fs = frozenset([1,2,3])            # frozenset({1,2,3})
dct2 = {k: k*2 for k in range(3)}  # {0:0, 1:2, 2:4}

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

Типичные ошибки: использование кортежа как ключа словаря возможно только если все элементы кортежа хэшируемы. Множество не может содержать изменяемые объекты (например, список). При неявном сравнении == у списков и кортежей учитывается порядок, у множеств - нет. Решение - тщательно выбирать тип коллекции под задачу.

Что такое булевый тип и None?

Тип bool имеет два значения: True и False. Логические операторы: and, or, not. Тип None (единственный объект NoneType) обозначает отсутствие значения. Примеры:


flag = True
print(flag and False)   # False
print(not flag)         # False
x = None
print(x is None)        # True

множественный выбор python (множественный выбор (if-elif-else) в python)

Любой объект может быть проверен на истинность в логическом контексте. Пустые коллекции, нули, None - ложны; остальные - истинны. Функция bool() преобразует объект в булево значение.


print(bool(0), bool(1), bool(''), bool('abc'))  # False True False True

Типичная ошибка: сравнение с None через == может работать некорректно для некоторых классов, переопределяющих __eq__. Всегда используйте is None или is not None. Также путаница между False и None - это разные объекты.

Расширенные примеры работы с типами данных

Ниже приведены примеры, демонстрирующие неочевидные возможности и комбинации типов.

Пример 1: Использование memoryview для работы с bytes

Пример

data = b'Hello'
mv = memoryview(data)
print(mv[0])               # 72 (код символа 'H')
mv[0] = 74  # Ошибка: memoryview неизменяемого bytes
Ошибка: TypeError: cannot modify read-only memory.
Но если использовать bytearray:
Пример

data = bytearray(b'Hello')
mv = memoryview(data)
mv[0] = 74
print(data)  # b'Jello'
b'Jello'

Пример 2: Распаковка и объединение словарей

Пример

d1 = {'a': 1, 'b': 2}
d2 = {'c': 3, 'a': 10}
merged = {**d1, **d2}
print(merged)  # {'a': 10, 'b': 2, 'c': 3}
{'a': 10, 'b': 2, 'c': 3}

Пример 3: Преобразование списка кортежей в словарь

Пример

pairs = [('x', 1), ('y', 2), ('z', 3)]
d = dict(pairs)
print(d)  # {'x': 1, 'y': 2, 'z': 3}
{'x': 1, 'y': 2, 'z': 3}

Пример 4: Использование frozenset в качестве ключа словаря

Пример

key = frozenset([1, 2, 3])
d = {key: 'value'}
print(d)  # {frozenset({1, 2, 3}): 'value'}
{frozenset({1, 2, 3}): 'value'}

Пример 5: Генерация чисел Фибоначчи с помощью спискового включения

Пример

fib = [0, 1]
[fib.append(fib[-1] + fib[-2]) for _ in range(8)]
print(fib)  # [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]

Пример 6: Применение Decimal для точных денежных расчетов

Пример

from decimal import Decimal, getcontext
getcontext().prec = 4
a = Decimal('1.234')
b = Decimal('5.678')
c = a + b
print(c)  # 6.912
6.912

Типы данных в Python с примерами - comments

En
типы данных в python с примерами (python)