Переменные#

Переменные в 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 заранее созданы и хранятся в массиве (списке). Поэтому при создании числа из этого диапазона фактически создаётся ссылка на число в созданном массиве.

Примечание

Эта особенность характерна именно для реализации 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).