Включите исполнение JavaScript в браузере, чтобы запустить приложение.
7 ноя 2024

Понимание типов данных в Python: подробный гайд для новичков

Хотите узнать больше о типах данных в Python? Эта статья расскажет вам все, что нужно знать о строках, числах, списках, словарях и кортежах. Вы узнаете, как использовать каждый тип данных для создания чистого и эффективного кода.

Python реализует встроенные типы данных, поэтому программистам нужно знать, когда использовать каждый из них. Это объектно-ориентированный язык: он состоит из объектов и классов. Каждый объект представляет собой определенный тип, каждый тип определяется классом. При создании экземпляра объекта, принадлежащего классу, создается новая переменная. Класс и считается типом этой переменной.

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

Что такое типы данных в Python

Типы данных в Python относятся к классификации или категоризации объектов данных на основе их характеристик. Они определяют тип значений, которые могут храниться в переменных, а также операции, которые можно выполнять с этими значениями. В Python есть несколько встроенных типов данных. Это числовые типы (int, float, complex), строковые (str), логические (bool) и типы коллекций (список, кортеж, dict, set). Каждый тип данных имеет свой собственный набор свойств, методов и поведения, которые позволяют программистам эффективно манипулировать ими и обрабатывать данные.

Типы данных помогают наладить взаимодействие с интерпретатором Python. Например, целые числа могут содержать данные целых чисел, а строка — быть предназначенной для символьных данных. Ввод значения неправильного типа (например, текста в целочисленную переменную) может вызвать ошибку во время выполнения и гарантировать, что программы не будут скомпрометированы.

Типы данных также определяют набор операций, которые могут быть выполнены с данными, помещенными в переменную. Целые числа включают сложение и вычитание, которые могут быть применимы, а строки — нет. Операции манипулирования, при которых вы объединяете две или более строк, не будут применяться к целочисленным переменным. Это повышает безопасность типов, предотвращает возможные ошибки в будущем.

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

Типы данных делят на изменяемые и неизменяемые. К первым относятся списки, словари и множества. Кортежи, строки, булевы значения, числа и числа с плавающей запятой считаются неизменяемыми. Рассмотрим каждый тип подробнее.

Числовые. Числовые типы данных используются для представления любых числовых значений. В Python есть три основных типа числовых данных: целые числа, числа с плавающей запятой и комплексные числа.

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

# Python Integer

a = 7

y = -1

c = 0

print(a)  # Output: 7

print(y)  # Output: -1

print(c)  # Output: 0

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

# Multiplication operation *

multiplication = 10 * 2

print("Multiplication:", multiplication)  # Output: 20

Тип данных с плавающей запятой (float) можно рассматривать как инструмент, обеспечивающий хорошее сочетание точности и использования пространства. В типе с плавающей запятой используется двоичная арифметика с фиксированной запятой, поэтому результаты могут немного отличаться от результатов десятичной арифметики с фиксированной запятой. Об этом следует помнить, особенно при расчетах высокой точности. float может представлять как целые числа, так и дроби.

# Python Float

b = 2.47

y = -0.1

k = 5.0

Число с плавающей запятой — любое число с десятичной точкой. Пример операции:

# Multiplication operation

e = 4.0

f = 2.5

print(e * f)  # Output will be 10.0

Комплексные числа (complex) широко используются в технике, физике и математике для моделирования действительных и мнимых компонентов. Числа принимают форму a + bj, где a и b — действительные числа, а j представляет собой мнимую единицу, определяемую как квадратный корень из -1.

z1 = 8 + 2j  # Creates a complex number 8 + 2j

z2 = -9 - 6j # Creates a complex number -9 - 6j

В Python есть сложение, вычитание, умножение и деление комплексных чисел:

z2 = complex(3, 2)

z4 = complex(-1, 6)

# Addition Operation

sum_z = z2 + z4  # Result: 3 - 1 + (2 + 6)j = 2 + 8j

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

Списки определяются с помощью квадратных скобок [] с элементами, разделенными запятыми. Это изменяемая встроенная структура данных для хранения коллекций элементов. Пример:

# List creation

the_list = [1, 2, 4, 5]

# creating a mixed data list

multiple_data_list = [1, 'hi', 2.57, False]

print(the_list[0])   # Output: 1

print(multiple_data_list[2])  # Output:2.57

Строка, заключенная в одинарные (') или двойные кавычки ("), — это неизменяемая последовательность символов. Ее используют для представления текстовых данных.

В Python доступно индексирование, нарезка и объединение строк:

# Creating a String with both single and double quote

single_string = 'Hello!'

double_string = "Python Programming!"

# Outputting the result 

print(single_string[0])    # Output: 'H'

print(double_string[-1])   # Output: '!'

Логический тип данных. Этот тип данных (bools) содержит значения истинности и закладывает основу для логических операций и условных операторов. Он имеет только два возможных значения: содержит вопросы и ответы в формате «True» и «False». Они полезны при принятии решения о том, следует ли продолжать выполнение или перейти в другое место внутри программы в зависимости от условий.

is_user_authenticated = True

is_prime_number = False

# Conditional statement (if-else)

if is_user_authenticated:

print("Welcome back!")

else:

 print("Please log in.")

# Logical operators (and, or, not)

is_admin = is_user_authenticated and has_admin_privileges

Другие типы данных. В Python кортеж — это структура данных, очень похожая на список, но с несколькими важными отличиями. Кортежи неизменяемы. Это полезно, когда вам нужно хранить данные, которые не следует менять. 

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

>>> matts_tuple = ('Matt', 'matt@dataquest.io', 'www.matt.com', 37, True)

>>> print(matts_tuple)

В Python словарь dict применяется для хранения коллекции пар ключ-значение.

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

Можно создать dict с помощью фигурных скобок {} или конструктора dict(). D dict не допускаются дубликаты ключей. Присвоение нового значения существующему ключу заменит только старое значение, связанное с этим ключом. Неизменяемость ключей гарантирует, что ключи остаются «хешируемыми» и согласованными. Любой тип данных (например, списки, кортежи, строки, числа и даже словари), может быть связан с ключами в словаре.

Как определять типы данных

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

Функция type(). Сообщает, какие данные содержит переменная.

a = 5

b = 5.0

c = "Hello, World!"

print(type(a))  # Output: <class 'int'>

print(type(b))  # Output: <class 'float'>

print(type(c))  # Output: <class 'str'>

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

a = 5

b = 5.0

print(isinstance(a, int))    # Output: True

print(isinstance(b, float))  # Output: True

Подсказки. Можно использовать подсказки для полной информации о типах переменных и возвращаемых значениях функций. Они улучшают читаемость кода и помогают использовать инструментам статического анализа.

def add(x: int, y: int) -> int:

    return x + y

# Using the function with type hints

result = add(3, 5)

print(result)  # Output: 8

# Type hinting with variables

a: int = 10

b: float = 20.5

print(type(a))  # Output: <class 'int'>

print(type(b))  # Output: <class 'float'>

Использование типов данных в программах

Преобразование типов данных. В программировании преобразование типов — это процесс преобразования данных одного типа в другой. Например: преобразование данных int в str.

В Python два вида преобразования типов:

  • Implicit Conversion — автоматическое преобразование типов;
  • Explicit Conversion— преобразование типов вручную.

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

integer_number = 123

float_number = 1.23

new_number = integer_number + float_number

# display new value and resulting data type

print("Value:",new_number)

print("Data Type:",type(new_number))

При явном преобразовании типов пользователи преобразуют тип данных объекта в требуемый тип данных. Можно использовать встроенные функции — int(), float(), str(). Этот тип преобразования также называется приведением типов: пользователь изменяет тип данных объектов.

num_string = '12'

num_integer = 23

print("Data type of num_string before Type Casting:",type(num_string))

# explicit type conversion

num_string = int(num_string)

print("Data type of num_string after Type Casting:",type(num_string))

num_sum = num_integer + num_string

print("Sum:",num_sum)

print("Data type of num_sum:",type(num_sum))

Полиморфизм. Определенные функции Python можно использовать с разными типами данных. Функция len() — один из примеров такой функции. Python позволяет ему работать с широким спектром типов данных.

Встроенная функция len() оценивает длину объекта на основе его типа. Если объект — строка, он возвращает количество символов. Если объект представляет собой список, он возвращает количество элементов в списке. 

mystr = 'Programming'

print('Length of string:', len(mystr))

mylist = [1, 2, 3, 4, 5]

print('Length of list:', len(mylist))

mydict = {1: 'One', 2: 'Two'}

print('Length of dict:', len(mydict))

Расширенные концепции типов данных

Специальные методы. Объект Python имеет несколько специальных методов, обеспечивающих определенное поведение. Существует два похожих специальных метода, описывающих объект с использованием строкового представления. Это методы .__repr__() и .__str__(). Метод .__repr__() возвращает подробное описание для программиста, которому необходимо поддерживать и отлаживать код. Метод .__str__() возвращает более простое описание с информацией для пользователя программы._init__ — это метод экземпляра, который отвечает за инициализацию вновь созданного объекта. Он принимает объект в качестве первого аргумента (self), за которым следуют любые дополнительные аргументы.

ООП. Четыре основы ООП — инкапсуляция, наследование, полиморфизм и абстракция. Инкапсуляция объединяет данные и методы. Наследование позволяет новым классам быть производными от существующих. Полиморфизм позволяет рассматривать объекты как экземпляры их родительского класса. Абстракция скрывает от пользователя ненужные детали кода. Она полезна, когда нельзя раскрывать конфиденциальные части реализации кода.

Заключение

Выбор подходящего типа данных для переменных сказывается не только на синтаксисе: он влияет на эффективность и удобство сопровождения кода. Описательные имена для переменных вместе с выбором правильных типов положительно влияют на читаемость кода для вас и для других. Повышается производительность — общие операции обычно выполняются быстрее для определенных типов данных: они специально оптимизированы. Например, простая математическая арифметика с целыми числами обычно выполняется быстрее по сравнению с арифметикой с числами с плавающей запятой, поскольку в них используются фиксированные точки. Безопасность по типам данных гарантирует, что ненужные операции не могут быть выполнены в программе. Это исключает ошибки во время выполнения.