The History of Python

2009年4月28日星期二

为何实现一切皆成为可执行语句

英文原文链接:http://python-history.blogspot.com/2009/03/how-everything-became-executable.html


原文作者:Guido van Rossum


Python新用户有时对语言的任一部分,包括函数和类定义,均能作为可执行语句产生惊奇。这意味着任何语句可以出现在程序的任意地方。例如,如果需要,函数定义可以出现在“if”语句中。


Python语法的初期版本,情况并不是这样的:具有“申明特征”的语法元素,例如import语句和函数定义,只允许出现在模块和脚本(被执行的那个程序)的顶级。然而,当我增加类的时候,我觉得这样过于限制。

我的推理过程如下。与其定义类为纯粹的一系列函数定义语句,看起来允许赋值常规变量也有意义。然而,既然允许这样,我何不更进一步,允许任意的可执行代码呢?或者,更彻底一些呢,例如允许在“if”语句中允许函数定义?很快就发现这样可用于简化语法,对它们可以采用相同的字节码生成函数。


虽然这个原因使我简化了语法,也允许用户在任意位置放置Python语句,这个特性并不意味着一定要支持某个特定编程风格。例如,Python语法在技术上允许定义嵌套函数,然而Python并不支持嵌套命名空间的潜在语义。因此,类似的代码常会运行怪异或者“坏掉”,毕竟不能和那些专门设计出来的语言特性相比。随着时间的过去,许多“坏掉”的特性被修正。例如嵌套函数定义在Python2.1之后才开始工作的正常起来。

没有评论: