可以在Python中重新定义关键字吗?
我遇到了一个问题,在这个问题上,我必须jsonification我的API设置要返回的所有内容。当我写一本装饰书并将其应用于每一种方法时,我突然想到: “我不能覆盖return关键字,以便它每次都为我执行此操作吗?” 我做了一些搜索,但找不到关于这个主题的任何东西。然而,既然“一切都是一个物体”,也许这是可能的 显然,覆盖可以在Python中重新定义关键字吗?,python,python-3.x,keyword,reserved-words,redefinition,Python,Python 3.x,Keyword,Reserved Words,Redefinition,我遇到了一个问题,在这个问题上,我必须jsonification我的API设置要返回的所有内容。当我写一本装饰书并将其应用于每一种方法时,我突然想到: “我不能覆盖return关键字,以便它每次都为我执行此操作吗?” 我做了一些搜索,但找不到关于这个主题的任何东西。然而,既然“一切都是一个物体”,也许这是可能的 显然,覆盖return是个坏主意,但从更一般的意义上讲,我的问题是: 您可以更改Python中保留字和关键字的行为吗?否,您不能在Python中重新定义保留字。它们的意思是…drumro
return
是个坏主意,但从更一般的意义上讲,我的问题是:
您可以更改Python中保留字和关键字的行为吗?否,您不能在Python中重新定义保留字。它们的意思是…drumroll…保留的,因此根据定义它不能被更改 我能在官方文件中找到的最接近于明确说明这一事实的是《语言参考》的词汇分析章节(我的重点): 2.3.1. 关键词 以下标识符用作语言的保留字或关键字,不能用作普通标识符。它们的拼写必须与此处所述完全一致:
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
语句中将其分配给、用作函数名等
重要的是要理解,关键字的基本性质实际上是禁止更改其含义的,尽管如此–赋值等将不起作用是这种性质的结果,而不是原因。Nope…..除非您放弃python项目并重写return关键字,如果你想在任何地方都返回json,它就可以工作了……它是一个类吗?你可以用@Grant-McCloskey来修饰一个类中的所有方法,我不是想解决一个具体的问题,而是想更好地理解整个语言。我写下了我的思考过程,这样人们就可以理解我的问题。是的,我只是想想出其他方法来代替这个问题的起源,因为我找到了类似的答案。我有点惊讶,因为我找不到这个问题的副本,所以我对@Rodrigalencar的评论做了一些扩展,使之成为一个“正确”的答案。