Знаете что общего между языком Python и балончиком с краской ? Они оба хороши для создания меток! В Python их называют переменными, а в лесу это метки на стволах деревьев:
В Python метки можно ставить на что угодно: строки, числа, функции и даже модули. Для навешивания меток используют знак присваивания =
:
label_a = 'Hello, World!'
label_b = 3.14
label_c = 1 + 2 + 3
label_d = get_random_value()
Здесь мы создали четыре переменные: label_a
отметила строку, label_b
— число, label_c
отметила результат сложения, а label_d
— результат вычисления функции get_random_value
.
На одно дерево можно поставить сразу несколько меток: красную, синюю и белую. Python тоже так умеет:
label_red = label_blue = label_white = 'Tree'
Все три переменные ссылаются на одну и ту же строку 'Tree'
.
Переменные нужны, чтобы сослаться на значение, вычисленное ранее. Например, у нас есть код для скачивания картинки:
download_image(select_first_image())
С помощью переменной мы можем поставить метку на промежуточный результат и сослаться на него во второй строчке кода:
filepath = select_first_image()
download_image(filepath)
Первая строка кода вызывает функцию select_first_image()
и результат отмечает c помощью переменной filepath
. Вторая строка вызывает функцию download_image()
и передает ей значение, отмеченное переменной filepath
. Так переменные позволяют разбивать код на несколько строк и делать его понятнее.
Переменные удобны, когда одно значение используется многократно:
unit_cost = 20
print('Цена штуки', unit_cost)
print('Цена десятка', 10 * unit_cost)
print('Цена дюжины', 12 * unit_cost)
В отличии от меток на деревьях, переменные можно "перевешивать" с одного значения на другое:
label = 'First String'
label = 'Second String'
label = None
Сначала label
отметила строку 'First String'
, затем 'Second String'
и в конце обозначила пустое значение None
.
Python накладывает минимум ограничений на названия переменных: они должны начинаться с латинской буквы и в них не может быть пробелов. Но код читает не только компьютер, еще его смотрят программисты. И к названиям переменных они предъявляют куда более жесткие требования:
- использовать только нижний регистр букв —
lower_case
- в названии отвечать на вопрос "Что хранит переменная?"
- только англоязычные названия, запрет на траслит
- использовать только общепринятые сокращения
Узнать тип данных можно с помощью вызова type()
. Эта команда ведет себя как функция: на вход принимает объект, а возвращает его тип.
type()
умеет работать с чем угодно, ведь в Python не бывает объектов без типа данных:
print(type(1))
# выведет <class 'int'> — целое число
print(type('abc'))
# выведет <class 'str'> — строка
print(type(None))
# выведет <class 'NoneType'> — пустой объект
print(type(print))
# выведет <class 'builtin_function_or_method'> — функция
import os
print(type(os))
# выведет <class 'module'> — модуль
print(type(type))
# выведет <class 'type'> — это класс
Когда говорят о типе переменной, то имеют ввиду тип значения, на которое она ссылается:
print(type(1)) # выведет <class 'int'>
label = 1
print(type(label)) # выведет <class 'int'>
Оба вызова print()
выведут на экран <class 'int'>
— тип данных "целое число".
У самой переменной нет типа данных, она может сначала отмечать строку, а затем — пустое значение None
:
label = 'abcde'
print(type(label)) # <class 'str'>
label = None
print(type(label)) # <class 'NoneType'>
Тип переменной, а если быть точнее, то "тип значения переменной" становится важен при работе с числами:
a = 1
b = 2
print(a + b) # выведет 3
a = '1'
b = '2'
print(a + b) # выведет 12
Складывать строки и числа нельзя:
a = 1
b = '2'
print(a + b) # выдаст ошибку
Типы данных можно преобразовывать с помощью специальных функций int()
и str()
:
a = 1
b = 2
print(str(a) + str(b)) # выведет 12
Подробнее про типы данных и преобразование: