是否可以重新定义 Python 中的关键字?
Is it possible to redefine keywords in Python?
我 运行 遇到一个问题,其中我必须将我的 API 设置为 return 的所有内容进行 jsonify。当我编写装饰器并将其应用于每个方法时,我想到了一个想法:
"Can't I just overwrite the return keyword so that it performs this operation for me every time?"
我进行了一些搜索,但找不到与该主题相关的任何内容。但是,既然"everything is an object",也许有可能?
显然覆盖 return
是个坏主意,但从更一般的意义上讲,我的问题是:
你能改变 Python 中保留字和关键字的行为吗?
否,不能在Python中重新定义保留字。他们的意思是……drumroll……reserved,所以根据定义不能更改。
我能在官方文档中找到最接近明确 declaration 这个事实的是语言参考的词法分析章节(强调我的):
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
语句中的函数名等
重要的是要理解关键字的基本性质实际上禁止更改它们的含义,但是 - 赋值等不起作用是这种性质的结果,而不是它的原因。
我 运行 遇到一个问题,其中我必须将我的 API 设置为 return 的所有内容进行 jsonify。当我编写装饰器并将其应用于每个方法时,我想到了一个想法:
"Can't I just overwrite the return keyword so that it performs this operation for me every time?"
我进行了一些搜索,但找不到与该主题相关的任何内容。但是,既然"everything is an object",也许有可能?
显然覆盖 return
是个坏主意,但从更一般的意义上讲,我的问题是:
你能改变 Python 中保留字和关键字的行为吗?
否,不能在Python中重新定义保留字。他们的意思是……drumroll……reserved,所以根据定义不能更改。
我能在官方文档中找到最接近明确 declaration 这个事实的是语言参考的词法分析章节(强调我的):
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
语句中的函数名等
重要的是要理解关键字的基本性质实际上禁止更改它们的含义,但是 - 赋值等不起作用是这种性质的结果,而不是它的原因。