Именованные константы в Python
Есть ли в Python константы? В книге столкнулась с понятием "именованные константы". Слышала в прошлом году, что константы в Python отсутствуют.
Ответы (3 шт):
Насколько мне известно, в питоне не существует констант. Есть только соглашение именовать переменные ТАКИМ_ОБРАЗОМ, что означает, что менять их значение не следует.
Можно использовать модуль Constant:
from pyconst import Constant
const = Constant()
const.PI = 3.14159
Более подробная информация есть здесь
«Настоящие» константы, т.е. такие, которые
- явно определяются как константы (напр. в языке C/C++ ключевым словом
const), - и которым должно присвоить какое-то значение прямо в их определении,
- и которым язык программирования (точнее их компилятор / интерпретатор / система во время исполнения) не позволит изменить их значение, хотя бы программист этого хотел (т.е. попытка это сделать вызовет ошибку
в Питоне действительно не существуют.
Вместо этого в Питоне программист сам должен следить за тем, чтобы то, что бы он хотел сохранить как константу, невольно не изменил.
Чтобы программист не выл должен помнить / думать, если ту или другую переменную он хочет считать константой, в Питоне принято для констант использовать имена со всеми буквами прописными, например GREEN, PLAYER1 или FIRST_NUMBER.
Для опытного программиста в Питоне такие имена являются «неприкосновенными» — он их будет только использовать, но не менять.
Примечание:
Константы в языках программирования используются главным образом для избежания от «магических чисел» - например в долгой программе вы встретитесь с командой
for i in range(36):
и сразу же не поймете, почему там именно число 36.
Но когда вы это число определите — лучше всего в начале программы — как константу с соответствующим именем, все становится ясным:
ORDERS = 36 # количество заказов (в начале программы)
...
...
for i in range(ORDERS):
...