Почему нет «списка» зарезервированного слова в Python?

Я просто получил ошибку от ошибки, которая была бы предотвращена, если бы list был зарезервированным словом в Python. (Разумеется, с моей стороны.

Так почему же не список (или dict или float или какой-либо из типов) зарезервированное слово? Кажется, проще добавить ошибку интерпретатора, чем попытаться запомнить правило.

(Я также знаю, что Eclipse / PyDev имеет настройку, которая напомнит вам об этом правиле, которое может быть полезно.)

4 Solutions collect form web for “Почему нет «списка» зарезервированного слова в Python?”

Сохраняются только ключевые слова .

list – это не ключевое слово, а встроенный тип, как str , set , dict , unicode , int , float и т. д.

Нет смысла резервировать каждый возможный встроенный тип; python – динамический язык, и если вы хотите заменить встроенные типы локальным именем, которое его тенями, вы должны уметь.

Подумайте о list и других типах в качестве предварительно импортированной библиотеки типов объектов; вы бы не ожидали, что defaultdict из collections будет зарезервирован?

Используйте статический анализатор кода для обнаружения таких ошибок; большинство IDE позволяют легко интегрировать их.

Посмотрите на это: http://docs.python.org/2/reference/lexical_analysis.html#keywords

list – это просто тип и не зарезервирован (ни int , float , dict , str … вы не понимаете).

Вероятно, по той же причине, для которой классы не имеют частных атрибутов. Это дух Питона.

Это немного вопрос мнения, но вот мой 2c.

Очень важно сделать ключевое слово зарезервированным, так как по сути это означает, что вы никогда не сможете использовать это ключевое слово в коде, поэтому часто считается хорошим языком программирования, чтобы сохранить список коротким. (perl не делает, но тогда perl имеет совершенно другую философию для большинства других языков программирования и использует специальные знаки перед переменными, чтобы попытаться предотвратить столкновения).

В любом случае, чтобы понять, почему это так, рассмотрите возможность переадресации. Представьте себе, что разработчики python решили, что array является такой фундаментальной концепцией, что они хотят сделать его встроенным (не непостижимым – это произошло с set in, um, python 2.6?). Если встроенные функции были автоматически зарезервированы, то любой, кто ранее использовал array для чего-то другого (даже если явно импортирован как from superfastlist import array ), или реализовал свои собственные ( numpy сделал это), вдруг обнаружил бы, что их код не будет работать , и они были бы очень сердиты.

(Если на то пошло, подумайте, была ли help сделана зарезервированным словом – библиотеки zillion, включая argparse, используйте help как аргумент ключевого слова)

  • Список против скорости распознавания генератора с функцией соединения
  • Python, os.system для вызова командной строки (linux), не возвращающего то, что нужно?
  • Переопределение модуля тестирования модуля Python для пользовательского вывода?
  • AttributeError: объект 'module' не имеет атрибута 'PROTOCOL_TLSv1_2' с Python 2.7.11
  • IndexError: индекс tuple вне диапазона --- Python
  • xrange по сравнению с itertools.count Python 2.7
  • не удается установить matplotlib с помощью pip
  • Правильный способ использования аксессуаров в Python?
  • Python - лучший язык программирования в мире.