Я столкнулся с проблемой, из-за которой мне пришлось jsonify все, что мой API был настроен на возврат. Когда я писал декоратор и применял его к каждому методу, мне пришла в голову мысль:
"Can't I just overwrite the return keyword so that it performs this operation for me every time?"
Я немного поискал, но ничего не нашел по теме. Однако, раз уж «все есть объект», может быть, это возможно?
Очевидно, что перезапись return - плохая идея, но в более общем смысле мой вопрос:
Можете ли вы изменить поведение зарезервированных слов и ключевых слов в Python?
Это класс? Вы можете украсить все методы в классе с помощью единственный декоратор.
@ Грант Макклоски Я не столько пытаюсь решить конкретную проблему, сколько лучше понять язык в целом. Я изложил свой мыслительный процесс, чтобы люди могли понять, о чем я спрашиваю.
Да, я просто пытался придумать другие альтернативы происхождению вопроса, потому что я наткнулся на аналогичный.
Я был немного удивлен, что не смог найти дубликата для этого вопроса, поэтому я немного расширил комментарий @RodrigoAlencar, чтобы сделать его «правильным» ответом.






Нет, вы не можете переопределить зарезервированные слова в 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 и т. д.
Важно понимать, что это фундаментальная природа ключевых слов, которая на самом деле запрещает изменение их значения - это назначение и так далее не будет работать, это следствие такой природы, а не ее причина.
Нет ... если вы не разветвите проект python и не перепишите ключевое слово return, будет работать, но только если вы хотите возвращать json везде .... lol