python 语法的提案 - 什么会进入实施?

Proposal for python syntax - what would go into implemention?

我想使用某些关键字和 unary/binary 运算符作为函数。例如:

_not = lambda a: not a
_plus = lambda a, b: a + b
_or = lambda a, b: a | b

我认为有机会使用更简单的语法,在某些功能设置中看起来会更好:

_not = (not)
_plus = (+)
_or = (|)

反正右边的表达式是无效的,为什么不把它们变成那些函数呢。我认为它对身份 lambda 也很好,也许是 (:),如 (:) = lambda x: x.

所以提出一个问题:从广义上讲,要在我本地安装的 python and/or 上实施这些更改需要什么?为什么这是一个糟糕的想法?

干杯

在 python 解释器语法分析器 (how they work) 中,某些关键字被认为是保留给解释器的

例如让我们考虑一个名为 def

的变量

这会导致问题,因为 python 怎么知道你是否正在声明一个声明变量的函数

要在本地安装中更改此设置,您必须找到 python 的开源文档,找到将这些关键字用于其他内容以保留功能的解释过程的一部分,例如将 def 更改为 define 这样您仍然可以声明函数

综上所述,仅仅能够拥有一个名为 def 而不是 _def 的 var 就比它的价值要麻烦得多

你在这里试图做的是覆盖内置范围,

  • 这是个坏主意,因为您试图覆盖所有 python/过程/面向对象的程序员自然会使用的功能和语法。
  • 更重要的是,正如在下面的评论中提到的,您提到的代码行将引发 syntaxError 异常,这意味着在解释您的 python 代码的二进制 'python' 程序中的某个地方,存在不接受您想要的语法类型的规则和语法,这意味着如果您想要一种以这种方式工作的语言,您将不得不自己创建它(这需要您了解编译的含义,阶段一个程序变成一个可执行文件,也许熟悉有助于你完成这项工作的库),或者找到与你想要的类似的其他语言。

如果您真的对解决您的问题感兴趣,我认为您应该检查像 LISP 这样的函数式编程语言,或者尝试查看名为 textX[=22 的 python 模块=] 您可以用它来创建您自己的语言,但您希望它成为什么样的语言,然后测试这个想法是否像您想象的那样好。