是否可以在 Python 中重新定义关键字?

Sim*_*mon 5 python reserved-words keyword redefinition python-3.x

我遇到了一个问题,我必须对我的 API 设置返回的所有内容进行 jsonify。当我在写一个装饰器并将它应用到每一个方法时,我想到了一个想法:

“我不能只是覆盖 return 关键字,以便它每次都为我执行此操作吗?”

我进行了一些搜索,但找不到有关该主题的任何内容。然而,既然“一切都是对象”,也许有可能?

显然覆盖return是一个坏主意,但在更一般的意义上,我的问题是:

你能改变 Python 中保留字和关键字的行为吗?

Zer*_*eus 5

,您不能在 Python 中重新定义保留字。它们的意思是……鼓声……保留,所以根据定义它不能被改变。

我能在官方文档中找到最接近这一事实的明确声明的是语言参考的词法分析章节(重点是我的):

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
Run Code Online (Sandbox Code Playgroud)

由于关键字不能用作普通标识符,因此不能将它们分配给、用作def语句中的函数名称等。

重要的是要了解,实际上是关键字的基本性质禁止更改其含义,尽管如此 - 分配等不起作用是这种性质的结果,而不是其原因。