Можно ли переопределить ключевые слова в Python?

Я столкнулся с проблемой, из-за которой мне пришлось jsonify все, что мой API был настроен на возврат. Когда я писал декоратор и применял его к каждому методу, мне пришла в голову мысль:

"Can't I just overwrite the return keyword so that it performs this operation for me every time?"

Я немного поискал, но ничего не нашел по теме. Однако, раз уж «все есть объект», может быть, это возможно?

Очевидно, что перезапись return - плохая идея, но в более общем смысле мой вопрос:

Можете ли вы изменить поведение зарезервированных слов и ключевых слов в Python?

Нет ... если вы не разветвите проект python и не перепишите ключевое слово return, будет работать, но только если вы хотите возвращать json везде .... lol

Rodrigo Alencar 23.08.2018 20:50

Это класс? Вы можете украсить все методы в классе с помощью единственный декоратор.

bison 23.08.2018 21:00

@ Грант Макклоски Я не столько пытаюсь решить конкретную проблему, сколько лучше понять язык в целом. Я изложил свой мыслительный процесс, чтобы люди могли понять, о чем я спрашиваю.

Simon 23.08.2018 21:09

Да, я просто пытался придумать другие альтернативы происхождению вопроса, потому что я наткнулся на аналогичный.

bison 23.08.2018 21:32

Я был немного удивлен, что не смог найти дубликата для этого вопроса, поэтому я немного расширил комментарий @RodrigoAlencar, чтобы сделать его «правильным» ответом.

Zero Piraeus 26.08.2018 15:02
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
5
5
1 317
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Нет, вы не можете переопределить зарезервированные слова в Python. Их значение… барабанная дробьсдержанный, поэтому по определению его нельзя изменить.

Самое близкое, что я могу найти к явному декларация этого факта в официальной документации, находится в главе «Лексический анализ» Справочника по языку (выделено мной):

2.3.1. Keywords

The following identifiers are used as reserved words, or keywords of the language, and cannot be used as ordinary identifiers. They must be spelled exactly as written here:

False      await      else       import     pass
None       break      except     in         raise
True       class      finally    is         return
and        continue   for        lambda     try
as         def        from       nonlocal   while
assert     del        global     not        with
async      elif       if         or         yield

Поскольку ключевые слова не могут использоваться в качестве обычных идентификаторов, их нельзя назначать, использовать в качестве имен функций в операторах def и т. д.

Важно понимать, что это фундаментальная природа ключевых слов, которая на самом деле запрещает изменение их значения - это назначение и так далее не будет работать, это следствие такой природы, а не ее причина.

Другие вопросы по теме