有没有办法在 Python 中定义我自己的新语句,如def
, with
, ?for
当然,我并不是要覆盖现有的语句,只是创建一些我自己的语句。
如果是这样,我该怎么做?你能指出我关于这个主题的好文档吗?
有没有办法在 Python 中定义我自己的新语句,如def
, with
, ?for
当然,我并不是要覆盖现有的语句,只是创建一些我自己的语句。
如果是这样,我该怎么做?你能指出我关于这个主题的好文档吗?
不,您不能在 Python 程序中添加新语法。改变语言的唯一方法是编辑和重新编译语法文件和支持的 C 代码,以获得新的改变的解释器、编译器和运行时。
如果不重写编译器/解释器/等,就无法(重新)定义语言关键字。您可以做的也许是编写类似于 DSL(特定于域的语言)之类的东西,并将您的关键字语句转换为正确的 python 语句,这可能是一条更简单的路线。
虽然您无法修改 Python 本身的语法(无需像 Alex 提到的那样重新编译),但您可以使用元编程技术。下面是关于在 Python 中创建 DSL 的演示文稿的链接。
http://blog.brianbeck.com/post/53538107/python-dsl-i
如果您没有使用 Python,那么 Ruby 是一种用于定义 DSL 的出色语言,因为它具有更广泛的元编程功能。
http://www.themomorohoax.com/2009/02/25/how-to-write-a-clean-ruby-dsl-rails
Ren'Py是 Python 扩展的一个示例,它允许通过实现自己的解析器和编译器来自定义语句。
有一些编程语言可以让你做到这一点(例如 Tcl),但 Python 不是这些语言之一。