擅长:python、mysql、java
<p>为了支持Stallman的立场,Python在以下方面与典型的Lisp系统不同:</p>
<ul>
<li><p>Lisp中的<code>read</code>函数读取一个S表达式,该表达式表示可以作为数据处理或作为代码计算的任意数据结构。Python中最接近的东西是读取一个字符串,如果您想让它有任何意义,就必须自己解析它。</p></li>
<li><p>Lisp中的<code>eval</code>函数可以执行任何Lisp代码。Python中的<code>eval</code>函数只计算<em>表达式,需要<code>exec</code>语句来运行语句。但这两种方法都适用于表示为文本的Python源代码,您必须跳过一堆箍来“评估”Python AST。</p></li>
<li><p>Lisp中的<code>print</code>函数写出的S表达式与<code>read</code>接受的格式完全相同。<code>print</code>在Python中,打印出由您试图打印的数据定义的内容,这当然不总是可逆的。</p></li>
</ul>
<p>Stallman的声明有点不真诚,因为很明显Python<em>确实有一个名为<code>eval</code>和<code>print</code>的函数,但是它们所做的事情与他所期望的不同(并且次于预期)。</p>
<p>在我看来,Python<em>确实有一些类似于Lisp的方面,我可以理解为什么人们会建议Stallman研究Python。然而,作为<a href="http://www.paulgraham.com/diff.html">Paul Graham argues in What Made Lisp Different</a>,任何包含Lisp所有功能的编程语言也必须<em>是</em>Lisp。</p>