返回

不只是格式化:Python 与 Common Lisp 的相似之处

闲谈

写了一段时间的 Python 后,我总是觉得它与 Common Lisp(下文简称 CL)有亿点点相似之处。例如,Python 和 CL 都支持可变数量的函数参数。在 Python 中写成 def func(*args, **kwargs):,在 CL 中写成 (defun func (&rest args &key kwargs))。Python 的语法更紧凑,而 CL 的语法表意更清晰。此外,它们也都支持参数。在 Python 中写成 func(x=1, y=2),在 CL 中写成 (func :x 1 :y 2)

不仅仅是函数,Python 和 CL 的数据类型也有很多相似之处。例如,Python 中的列表和 CL 中的列表都支持索引和切片。Python 中的字典和 CL 中的字典都支持键值对。Python 中的元组和 CL 中的元组都支持不可变性。

Python 和 CL 都支持面向对象编程。在 Python 中,用 class 关键字定义类,用 def 关键字定义方法。在 CL 中,用 defclass 关键字定义类,用 defmethod 关键字定义方法。

Python 和 CL 都支持异常处理。在 Python 中,用 tryexceptfinally 关键字处理异常。在 CL 中,用 catchfinally 关键字处理异常。

Python 和 CL 都支持并发编程。在 Python 中,用 threadingmultiprocessing 模块进行并发编程。在 CL 中,用 threadscl-parallel 库进行并发编程。

Python 和 CL 都支持网络编程。在 Python 中,用 socketrequests 模块进行网络编程。在 CL 中,用 cl-socketcl-http 库进行网络编程。

Python 和 CL 都支持数据库编程。在 Python 中,用 sqlite3psycopg2 模块进行数据库编程。在 CL 中,用 cl-sqlitecl-postgresql 库进行数据库编程。

Python 和 CL 都支持图形编程。在 Python 中,用 pygamePyQt 模块进行图形编程。在 CL 中,用 cl-sdlcl-gtk 库进行图形编程。

Python 和 CL 都支持机器学习。在 Python 中,用 scikit-learnTensorFlow 库进行机器学习。在 CL 中,用 cl-mlcl-tensorflow 库进行机器学习。

总而言之,Python 和 CL 有很多相似之处,但也有一些差异。Python 的语法更紧凑,而 CL 的语法表意更清晰。Python 的库更丰富,而 CL 的库更稳定。Python 更流行,而 CL 更小众。