for/while/print*things*如何在python中工作?
我的意思是,语法是如何定义的,也就是说,我怎样才能做出这样的构造 我意识到在很多语言中,类似这样的东西都会被内置到编译器/规范中,因此它由编译器处理(至少我理解它是如何工作的) 但是有了python,到目前为止我遇到的所有东西都是程序员可以访问的,因此您或多或少有做任何您想做的事情的自由 我将如何编写自己的for/while/print*things*如何在python中工作?,python,loops,for-loop,syntax,while-loop,Python,Loops,For Loop,Syntax,While Loop,我的意思是,语法是如何定义的,也就是说,我怎样才能做出这样的构造 我意识到在很多语言中,类似这样的东西都会被内置到编译器/规范中,因此它由编译器处理(至少我理解它是如何工作的) 但是有了python,到目前为止我遇到的所有东西都是程序员可以访问的,因此您或多或少有做任何您想做的事情的自由 我将如何编写自己的版本,以或而?有可能吗 我没有任何实际的应用程序,所以答案是为什么?!问题只是“为什么不?”或“好奇”。不,你不能,不是从Python内部。无法向语言添加新语法。(您必须修改Python本身的
版本,以
或而
?有可能吗
我没有任何实际的应用程序,所以答案是为什么?!问题只是“为什么不?”或“好奇”。不,你不能,不是从Python内部。无法向语言添加新语法。(您必须修改Python本身的源代码,以创建自己的自定义Python版本。)
请注意,允许您以自定义方式定义可与for一起使用的对象,这涵盖了编写自己的迭代语法的许多可能用例。您不能创建等效的构造
for
,while
,if
等都是,它们以自己特定的语法内置到语言中。不过,有些语言(在某种程度上)确实允许这样做,例如。while
,print
,for
等都是关键字。这意味着它们在读取代码时由python解析器解析,去掉任何冗余字符并生成标记。之后,lexer将这些令牌作为输入,并构建一个程序树,然后由解释器执行。话虽如此,这些结构仅用作底层词汇机器的语法糖,因此从代码内部看不到。好吧,您有几个选项可以创建自己的语法:
map
或reduce
显然,这些都不是您想要的,但是python与smalltalk或lisp不同,它本身(不一定)是编程的,并且保证在运行时公开它自己的底层执行和解析机制 是的,我知道迭代器协议。所以你说的是流控制的语法,这些都是硬编码的,没有办法覆盖它(除了把
python
改成一些混蛋化)。所以你说的是,如果我写我自己的解析器,把它放在主语法的顶部,那么我可以解析我自己的代码,修改它,然后重新启动代码,并获得我想要的所有功能?(那是如果我有点疯狂的话)与疯狂无关。存在许多语言,第一步是将自定义源代码转换为可被另一个解析器/词法分析器/解释器/编译器理解的源代码,然后在目标运行时运行。是的,您可以编写自己的解析器,lexer和解释器,它们将由您自己的语法定义,然后生成python代码,这些代码将依次通过pythons机器运行,或者您可以直接输出可执行代码。如果您对编写简单的解释器感兴趣,请尝试bcnf converter工具——它能够在给定bcnf语法的情况下,用java/c++/haskell生成解析器和词法分析器。同样关于Python-函数有一个特殊的\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。你这个光荣的陌生人。goto
项目太棒了。@will,不客气!下面是另一个劫持编码功能的项目: