Переменные – очень важная составляющая программы; по сути, это символ (или набор символов), которому присвоено значение и который можно использовать вместо этого значения при написании программы.
Данное руководство ознакомит вас с основами работы с переменными в Python 3.
Что такое переменная?
С технической точки зрения переменная присваивает значению символическое имя или идентификатор. Имя переменной используется для того, чтобы сослаться на сохраненное значение в компьютерной программе.
Переменную можно представить как метку или ярлык с именем, который привязан к значению.
К примеру, у вас есть целое число 103204934813. Вы можете сохранить его в переменной, и тогда вам не придётся постоянно вводить повторно длинное число. Сохраните число в переменной my_int:
my_int = 103204934813
По сути, my_int – это ярлык, привязанный к значению 103204934813.
Фраза my_int = 103204934813 – это операция присваивания, которая состоит из следующих частей:
- my_int – имя переменной;
- = – оператор присваивания;
- 103204934813 – значение.
Таким образом, присваивая значению имя, вы инициализируете, или создаёте переменную. После этого можно использовать переменную вместо значения. В Python, в отличие от некоторых других языков программирования, переменные не нужно явно декларировать. То есть, объявив, что my_int равно 103204934813, вы можете просто использовать my_int вместо числа. Попробуйте запустить:
print(my_int)
103204934813
С помощью переменных можно быстро выполнить вычисления. Попробуйте отнять 813 из my_int:
print(my_int - 813)
103204934000
В качестве значения переменной можно использовать результат математического уравнения. Попробуйте сложить два числа и сохранить значение их суммы в переменной x:
x = 76 + 145
Как видите, это очень похоже на простейшее школьное уравнение; здесь, как и в алгебре, буквы и другие символы используются для представления чисел и величин в формулах и уравнениях. Синтаксис Python подразумевает, что имя переменной находится слева, а значение – справа.
Выведите значение x:
print(x)
221
Python выводит 221, потому что именно это число получается в результате сложения 76 и 145.
В виде переменной можно представить любой тип данных, не только числа.
my_string = 'Hello, World!'
my_flt = 45.06
my_bool = 5 > 9 #логический оператор оценивает выражение как истинное или ложное
my_list = ['item_1', 'item_2', 'item_3', 'item_4']
my_tuple = ('one', 'two', 'three')
my_dict = {'letter': 'g', 'number': 'seven', 'symbol': '&'}
Попробуйте запросить одну из этих переменных. На экране появится значение этой переменной:
my_list = ['item_1', 'item_2', 'item_3', 'item_4']
print(my_list)
['item_1', 'item_2', 'item_3', 'item_4']
Переменная выделяет небольшую область памяти, которая принимает заданное значение.
Правила задания имен переменных
Существует ряд правил, которых следует придерживаться при наименовании переменных.
- Имена переменных не могут содержать пробелов (формально, имя переменной состоит из одного слова).
- Имена переменных могут состоять только из букв, цифр и нижнего подчёркивания (_).
- Имя переменной не может начинаться с цифры.
Для примера рассмотрим правильные и неправильные имена переменных:
Правильно |
Неправильно |
my_int | my-int |
int4 | 4int |
MY_INT | $MY_INT |
another_int | another int |
Выбирая имя для переменной, следует также учитывать регистр: my_int, MY_INT, My_Int и mY_iNt – не одна, а четыре разные переменные.
Примечание: Избегайте похожих имён переменных в рамках одной программы.
Кроме того, имя переменной должно отвечать условиям соглашения. При именовании переменной принято начинать имя со строчной буквы и использовать подчеркивание при разделении слов. Переменная, чье имя начинается с большой буквы или написано в верблюжьем регистре, будет считаться недействительным.
Правильно |
Неправильно |
my_int | myInt |
int4 | Int4 |
my_first_string | myFirstString |
Но самое главное правило – это быть последовательным. Если уж вы начали использовать в программе переменные, написанные в верблюжьем стиле, продолжайте следовать этому принципу до конца.
Читайте также: PEP 8 – официальный мануал по кодированию в Python
Переназначение переменной
Значение переменной (что видно из самого понятия) можно изменять.
Возможность переназначения переменной очень важна: это позволяет программе добавлять пользовательские значения в существующие переменные, вернуть переменной прежнее значение и т.п.
Попробуйте задать в переменной x число, а затем переназначить её и задать строку:
x = 76
print(x)
x = "8host"
print(x)
76
8host
Если бы программа была написана так:
x = 76
x = "8host"
print(x)
в результате на экране появилось бы только второе присвоенное значение, так как это последнее назначение:
8host
Множественное присваивание переменной
Python позволяет присваивать одно значение нескольким переменным одновременно. Таким образом, вы можете инициализировать несколько переменных, а позже переназначить их.
Например, можно задать переменным x, y и z значение 0.
x = y = z = 0
print(x)
print(y)
print(z)
0
0
0
Теперь все три переменные имеют одинаковое значение и принадлежат к одной области памяти.
Python также позволяет присваивать несколько значений нескольким переменным в рамках одной строки. Например:
j, k, l = "8host", 1.05, 16
print(j)
print(k)
print(l)
8host
1.05
16
Как видите, переменной j было присвоено значение 8host, переменной k 1.05, l – 16.
Эта функция позволяет сократить код, и при этом сохранить его читабельность.
Глобальные и локальные переменные
При использовании переменной в программе важно иметь в виду её область видимости.
Область видимости переменной – это контекст, в котором она доступна в коде данной программы. Не все переменные доступны из всех частей программы: некоторые переменные являются глобальными, а некоторые – локальными.
Глобальные переменные объявлены вне функции, но доступны внутри функции. Локальные переменные объявлены внутри функции.
Рассмотрите пример таких переменных:
#Создайте глобальную переменную
glb_var = "global"
#Определите функцию
def var_function():
lcl_var = "local" #Создайте локальную переменную внутри функции
print(lcl_var)
#Вызовите функцию
var_function()
#Выведите глобальную переменную
print(glb_var)
local
global
Поскольку переменная glb_var является глобальной, мы можем сослаться на неё внутри функции var_function(). Отредактируйте предложенный выше код, чтобы сделать это:
glb_var = "global"
def var_function():
lcl_var = "local"
print(lcl_var)
print(glb_var) #Выводит glb_var внутри функции
var_function()
print(glb_var)
local
global
global
Теперь переменная glb_var выводится дважды: внутри и вне функции.
Попробуйте вызвать локальную переменную вне функции:
glb_var = "global"
def var_function():
lcl_var = "local"
print(lcl_var)
print(lcl_var)
NameError: name 'lcl_var' is not defined
Как видите, вы не можете вызвать локальную переменную вне функции, так как она существует только внутри функции.
Рассмотрим ещё один пример. Задайте глобальной и локальной переменной одно и то же имя:
num1 = 5 #Глобальная переменная
def my_function():
num1 = 10 #Локальная переменная с таким же именем, num1
num2 = 7 #Локальная переменная
print(num1) #Выведет локальную переменную num1
print(num2) #Выведет локальную переменную num2
#Вызывает my_function()
my_function()
#Выводит глобальную переменную num1
print(num1)
10
7
5
Поскольку локальная переменная num1 присвоена внутри функции, при вызове num1 появляется 10. При выводе глобальной переменной num1 (после вызова функции my_function()) появляется значение 5.
Оператор global позволяет определять глобальные переменные Python внутри функции:
def new_blog():
global blog = "8host" #Присваивает глобальную переменную
#Выводит глобальную переменную blog
print(blog)
Несмотря на то, что переменная blog была присвоена локально внутри функции new_blog(), она доступна вне функции благодаря оператору global. Потому при вызове print(blog) Python не выдаёт ошибку: переменная существует и вне, и внутри функции.
Примечание: Определение глобальных переменных внутри функции не очень часто используется, поскольку усложняет код.
Также следует помнить о том, что если вы ссылаетесь на переменную внутри функции, не присваивая ей значения, такая переменная будет глобальной. Для того чтобы создать локальную переменную, необходимо присвоить ей значение в теле функции.
Работая с переменными, важно определить, какие из них больше подходят этой программе: глобальные или локальные. Обычно лучше использовать локальные переменные; но если одна переменная используется в нескольких функциях, вы можете инициализировать глобальную переменную. Если вы работаете с переменной только в пределах одной функции или одного класса, лучше использовать её локально.
Читайте также: