Skip to content

Instantly share code, notes, and snippets.

@pelid
Last active March 21, 2019 12:54
Show Gist options
  • Save pelid/deb5cac512741cb181fa3cab32e1b195 to your computer and use it in GitHub Desktop.
Save pelid/deb5cac512741cb181fa3cab32e1b195 to your computer and use it in GitHub Desktop.
Переменные в Python

Что такое переменная

Знаете что общего между языком 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

Подробнее про типы данных и преобразование:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment