Языки без встроенной поддержки констант

1

Почему ни Perl, ни Python не поддерживают константы? Разве это просто считается маргинальной чертой, которую никто не хотел реализовать, или может быть что-то еще позади?

  • 3
    perldoc.perl.org/constant.html
  • 0
    хорошо знать, но это не встроено в язык, верно?
Показать ещё 3 комментария
Теги:

3 ответа

6

Python не поддерживает константы, потому что идея противоречит ее философии: здесь мы все соглашаемся с взрослыми. То есть, Python не запрещает изменять вещи через программное обеспечение; вместо этого он просто указывает, что вы не должны менять вещи и можете перестать работать, если вы это сделаете.

Чтобы указать константу в сценарии Python, обычно она становится переменной уровня модуля в ALL_CAPS.

(Еще один распространенный пример - "частные" члены класса, обычно отмеченные одним лидирующим подчеркиванием, которые являются частными только по соглашению и работают так же, как обычные атрибуты.)

  • 3
    Серьезно, не троллинг, но все, что касается пробелов, не похоже на философию Python, что мы все взрослые.
  • 0
    @musiKk: Для того, чтобы не троллить, ты, кажется, троллинг :)
Показать ещё 2 комментария
1

Вы не можете объявлять переменную или значение как константу, похожую на любые другие языки (например, JAVA или C). Просто не меняйте его.

Вы можете отличать обычные и константные переменные, используя правильные соглашения об именах. т.е. объявить константу как все

class Foo(object):
  CONST_NAME = "Name"

#or just
CONST_NAME = "Name"

хотя, если вам нужны константы для работы на python. это ссылки Константы в Python, Constants, были бы полезны

0

Создайте класс "константы" в Perl или Python, сохранив константы в этом классе. Импортируйте класс в свой скрипт Perl или Python.

  • 0
    По крайней мере, в Python это не делает их постоянными.
  • 0
    @katrielalex, есть способы запретить присваивание чему-либо, похожему на элемент данных, поэтому то, что говорит @Alex, возможно. Но разве это питон? Я бы сказал, нет.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню