2015-08-03 5 views
0

Я просто пытаюсь ознакомиться с правильной терминологией.Что квалифицируется как глобальные константы в Python

Какие структуры данных могут быть глобальными константами? Должны ли они быть неизменяемыми структурами данных?

Например, я знаю, что это будет глобальная константа:

THIS_CONSTANT = 5 

Но, к примеру, может список быть постоянным? Если он не изменяется во всей программе, даже если это измененный тип данных?

LIST_CONSTANT = [1, 2, 3, 4] 

Другой способ задать мой вопрос: правильно ли использовать изменяемые типы данных как глобальные константы?

+0

возможно дубликат: http://stackoverflow.com/questions/2682745/creating-constant-in-python –

+1

Да, это в основном отвечает на мой вопрос, хотя я действительно спрашиваю о соглашении, а не о том, что технически разрешено. – Malonge

+0

С другого вопроса: http://stackoverflow.com/a/2683099/2864740 – user2864740

ответ

1

Из опыта (без источников): да. Пока вы не меняете значение во всей программе, я бы сказал, что это разрешено быть глобальной константой. Стиль кода - это сообщение для себя и других программистов, говорящее, что значение этой переменной будет never изменить.

EDIT:

Как отмечалось @NightShadeQueen, используя кортеж будет лучше, потому что она неизменна. Это поможет вам (случайно) изменить значение константы.

+2

Hum. Думаю, в этом случае я бы предпочел бы вместо кортежа вместо списка вместо фреймера, вместо замороженного словаря вместо словаря и т. Д., И использовать только изменяемый тип, если бы у меня не было другого выбор. – NightShadeQueen

+0

Я не знал, что существует замороженное диктовки. Не могли бы вы связать документы? – Martin

+0

Derp. Нет никого, я не знаю, почему я думал, что он есть. – NightShadeQueen

0

Ну, хотя вы предпочитаете использовать переменные класса/константы вместо глобальных переменных, глобальные константы не являются по своей сути плохими. Реальные проблемы возникают, когда вы начинаете мутировать их. Итак, если глобальные константы, которые вы используете, неизменяемы, вам не нужно беспокоиться о вещи. Но, если ваши глобальные константы изменяемы, вам необходимо убедиться, что вы никоим образом не сможете их модифицировать во время выполнения.

Смежные вопросы