- ru
- Language: en
- Documentation version: latest
Переменные
Переменные в Python не требуют объявления типа переменной (так как Python – язык с динамической типизацией) и являются ссылками на область памяти. Правила именования переменных:
имя переменной может состоять только из букв, цифр и знака подчёркивания;
имя не может начинаться с цифры;
имя не может содержать специальных символов @, $, %.
Пример создания переменных в Python:
In [1]: a = 3
In [2]: b = 'Hello'
In [3]: c, d = 9, 'Test'
In [4]: print(a,b,c,d)
3 Hello 9 Test
Обратите внимание, что в Python не нужно указывать, что “a” это число, а “b” это строка.
Переменные являются ссылками на область памяти. Это можно продемонстрировать с помощью id(), которая показывает идентификатор объекта:
In [5]: a = b = c = 33
In [6]: id(a)
Out[6]: 31671480
In [7]: id(b)
Out[7]: 31671480
In [8]: id(c)
Out[8]: 31671480
В этом примере видно, что все три имени ссылаются на один и тот же идентификатор, то есть, это один и тот же объект, на который указывают три ссылки – “a”, “b” и “c”. С числами у Python есть одна особенность, которая может немного сбить с понимания: числа от -5 до 256 заранее созданы и хранятся в массиве (списке). Поэтому при создании числа из этого диапазона фактически создаётся ссылка на число в созданном массиве.
Note
Эта особенность характерна именно для реализации CPython, которая рассматривается в книге
Это можно проверить таким образом:
In [9]: a = 3
In [10]: b = 3
In [11]: id(a)
Out[11]: 4400936168
In [12]: id(b)
Out[12]: 4400936168
In [13]: id(3)
Out[13]: 4400936168
Обратите внимание, что у a
, b
и числа 3
имеют одинаковые идентификаторы.
Все они являются ссылками на существующее число в списке.
Если сделать то же самое с числом больше 256, идентификаторы у всех будут разные:
In [14]: a = 500
In [15]: b = 500
In [16]: id(a)
Out[16]: 140239990503056
In [17]: id(b)
Out[17]: 140239990503032
In [18]: id(500)
Out[18]: 140239990502960
При этом, если сделать присваивание переменных друг другу, то
идентификаторы будут у всех одинаковые (в таком варианте a
, b
и c
ссылаются на один и тот же объект):
In [19]: a = b = c = 500
In [20]: id(a)
Out[20]: 140239990503080
In [21]: id(b)
Out[21]: 140239990503080
In [22]: id(c)
Out[22]: 140239990503080
Имена переменных
Имена переменных не должны пересекаться с названиями операторов и модулей или же других зарезервированных слов. В Python есть рекомендации по именованию функций, классов и переменных:
имена переменных обычно пишутся или полностью большими или полностью маленькими буквами (например DB_NAME, db_name);
имена функций задаются маленькими буквами, с подчёркиваниями между словами (например, get_names);
имена классов задаются словами с заглавными буквами без пробелов, это так называемый CamelCase (например, CiscoSwitch).