Присвоение типа переменной в Python. Как присвоить тип переменной в Python

Переменные – важная составляющая программирования. Они используются для хранения чисел, строк, контейнеров с данными (такими, как списки, словари, множества, кортежи). 

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

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

Функции-конструкторы для преобразования типов данных

Есть три функции, которые осуществляют преобразование типов данных в этом языке программирования:

  • int(). Преобразовывает число с плавающей точкой или строку в целочисленное значение. В качестве аргумента принимает соответствующее значение или переменную, которая содержит float или string. Если она используется для преобразования дробного числа в целое, то дробная часть просто отсекается. То есть, происходит округление в меньшую сторону. 
  • float(). Осуществляет преобразование строки или целочисленного значения в число с плавающей точкой. Если происходит конвертация целого числа или строки, содержащей целое число, в дробное, то тогда добавляется точка и цифра 0. Например, 1 будет сконвертирован в 1.0.
  • str(). Эта функция выполняет обратное преобразование целочисленного значения или числа с плавающей точкой. То есть, создает строку из числа. Также в качестве аргумента этой функции может использоваться строка. То есть, можно создать одну строку из целого числа, числа с плавающей точкой и нескольких слов.

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

А теперь давайте рассмотрим каждую из этих функций преобразования более подробно.

Целочисленное преобразование

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

x = int(1) # x станет 1  

y = int(2.8) # y станет 2  

z = int(«3») # z станет 3

В комментариях в этом примере указано, какое число получится после преобразования. Обратите внимание, что число 2.8 округляется в меньшую сторону, несмотря на правила математики. 

Также можно вызвать функцию int() без аргументов. В результате, будет получено значение 0.

>>> int()

0

Как правило, этой функции передается исключительно один аргумент, который являет собой или число, или строку. Если же использовать в качестве строки буквы, будет выдана ошибка. Вот пример ввода функции в консоль Python и исключения, которое при этом вызывается. 

>>> int('4')

4

>>> int('3a')

Traceback (most recent call last):

  File "<pyshell#29>", line 1, in <module>

    int('3a')

ValueError: invalid literal for int() with base 10: '3a'

Эта ошибка содержит следующую информацию:

  1. Строка, в которой ошибка.
  2. Функция, в результате исполнения которой возникло исключение.
  3. В чем заключается вообще эта ошибка (здесь описано, что используется неправильное значение аргумента функции int – 3a .

А что будет, если передать этой функции целочисленное значение? Ничего не изменится. Функция вернет его же. 

А теперь приведем несколько примеров, как эта функция обрабатывает числа с плавающей точкой. 

>>> int(87)

87

>>> int(-103)

-103

>>> int(234.879)

234

>>> int(-0.3)

0

>>> int(-0.9)

0

Обратите внимание, что мы можем использовать как положительные, так и отрицательные числа типа float(или вещественные, как их еще часто называют).

Часто у новичков появляется вопрос: что будет, если в строку ввести число с плавающей точкой, а потом передать ее функции int(). К сожалению, такие преобразования интерпретатору не под силу. Поэтому будет выдана ошибка. 

>>> int('101.1')

Traceback (most recent call last):

  File "<pyshell#37>", line 1, in <module>

    int('101.1')

ValueError: invalid literal for int() with base 10: '101.1'

Точка здесь не считается числовым значением, поэтому ее использовать нельзя.

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

>>> a = '15.76'

>>> a = float(a)

>>> a

15.76

>>> a = int(a)

>>> a

15

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

>>> int('12',8)

10

>>> int('13h',20)

477

>>> int('111001',2)

57

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

>>> int(0b11)

3

>>> int('0b11')

Traceback (most recent call last):

  File "<pyshell#48>", line 1, in <module>

    int('0b11')

ValueError: invalid literal for int() with base 10: '0b11'

>>> int('0b11',2)

3

>>> int(0o10)

8

>>> int(0x15)

21

>>> int(0xA5)

165

Таким образом, функция int() возвращает как десятичное число (если используется только один аргумент), так и числа в других системах счисления, если используется два аргумента. 

Преобразование в число с плавающей точкой

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

float(57)

А этот пример демонстрирует использование переменных для преобразования целочисленного значения в число с плавающей точкой. 

f = 57

print(float(f))

57.0

Приведем еще несколько примеров. 

x = float(1) # x станет 1.0  

y = float(2.8) # y станет 2.8  

z = float("3") # z станет 3.0  

w = float("4.2") # w станет 4.2

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

Также можно выполнить преобразование в число с плавающей точкой еще одним способом. Но работает он не всегда. Это операция преобразования с помощью деления. Если разделить 5 на 2, в результате получится 2.5. Python это учитывает, и автоматически выполняет соответствующее преобразование. 

a = 5 / 2

2.5

Но если в результате деления появляется целое число (например если делится 10 на 2), то никакого преобразования не происходит. 

Преобразование в строки

Для этого, как мы уже поняли, используется метод str(). Если необходимо преобразовать целое число в строку, необходимо его написать в качестве аргумента этой функции.

str(12)

Если запустить эту команду в интерактивной оболочке Python, то вывод будет следующим.

’12’

То, что в окне интерпретатора выводится число с кавычками, говорит о том, что это данные строчного типа. 

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

user = "Michael"

lines = 50

print("Congratulations, " + user + "! You just wrote " + lines + " lines of code.")

Если мы попробуем выполнить эти команды, то будет выдана ошибка.

TypeError: Can’t convert ‘int’ object to str implicitly

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

Тогда проблем при исполнении кода не будет никаких.

Congratulations, Michael! You just wrote 50 lines of code.

А сам этот код будет выглядеть так. 

user = "Michael"

lines = 50

print("Congratulations, " + user + "! You just wrote " + str(lines) + " lines of code.")

Также возможно использование этого метода для преобразования числа с плавающей точкой в строку. Для этого необходимо соответствующее значение или переменную поместить в скобки. 

print(str(421.034))

f = 5524.53

print(str(f))

421.034

5524.53

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

Другие виды преобразований

Мы привели примеры самых простых преобразований. Но можно конвертировать не только в числа и строки, а и, например, в кортежи и списки.

Так, для преобразования в кортеж используется метод tuple()

print(tuple(['pull request', 'open source', 'repository', 'branch']))

('pull request', 'open source', 'repository', 'branch')

А чтобы выполнить преобразование кортежа в список, необходимо использовать функцию list() 

Заключение

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

ОфисГуру
Adblock
detector