Python 重新定义;至于;操作人员

Python 重新定义;至于;操作人员,python,cpython,Python,Cpython,有没有办法为重新定义,或者使用与相同的语法定义一个新的运算符,而不需要重新编译CPython 像这样的 gfor i in range(10): i+=1 没有for是一个关键字,而不是运算符。因此,它是解析器的一部分,等等。如果不更改其核心语言,就无法更改它(例如,您甚至必须更改Python所基于的抽象语法,以支持类似的内容)。我可以问您为什么要这样做吗?阅读你的代码的人都不知道什么是gfor甚至意味着:-)…我的想法是,我有一个引擎可以在GPU上运行for循环,我正试图为它制作最友好的

有没有办法为重新定义
,或者使用与
相同的语法定义一个新的运算符,而不需要重新编译CPython

像这样的

gfor i in range(10):
  i+=1

没有
for
是一个关键字,而不是运算符。因此,它是解析器的一部分,等等。如果不更改其核心语言,就无法更改它(例如,您甚至必须更改Python所基于的抽象语法,以支持类似的内容)。

我可以问您为什么要这样做吗?阅读你的代码的人都不知道什么是
gfor
甚至意味着:-)…我的想法是,我有一个引擎可以在GPU上运行
for
循环,我正试图为它制作最友好的Python包装器是的,这可能不起作用——至少不简单。你可以像Cython那样做(
cdef
,而不是
def
)。当然,然后您需要编写自己的解析器,将类似python的代码转换为C代码,并将其转换为可在运行时导入的已编译共享对象库……我建议您查看一下,相关的—编译python以在GPU上运行已经完成。(…但一般来说,能够从语言中的本机代码重新定义基本循环的行为通常是在LISPs中无法实现的——在LISPs中,这样的构造通常只是开箱即用的标准库宏)。