不只是格式化:Python 与 Common Lisp 的相似之处
2024-01-10 05:04:12
写了一段时间的 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 中,用 try
、except
和 finally
关键字处理异常。在 CL 中,用 catch
和 finally
关键字处理异常。
Python 和 CL 都支持并发编程。在 Python 中,用 threading
和 multiprocessing
模块进行并发编程。在 CL 中,用 threads
和 cl-parallel
库进行并发编程。
Python 和 CL 都支持网络编程。在 Python 中,用 socket
和 requests
模块进行网络编程。在 CL 中,用 cl-socket
和 cl-http
库进行网络编程。
Python 和 CL 都支持数据库编程。在 Python 中,用 sqlite3
和 psycopg2
模块进行数据库编程。在 CL 中,用 cl-sqlite
和 cl-postgresql
库进行数据库编程。
Python 和 CL 都支持图形编程。在 Python 中,用 pygame
和 PyQt
模块进行图形编程。在 CL 中,用 cl-sdl
和 cl-gtk
库进行图形编程。
Python 和 CL 都支持机器学习。在 Python 中,用 scikit-learn
和 TensorFlow
库进行机器学习。在 CL 中,用 cl-ml
和 cl-tensorflow
库进行机器学习。
总而言之,Python 和 CL 有很多相似之处,但也有一些差异。Python 的语法更紧凑,而 CL 的语法表意更清晰。Python 的库更丰富,而 CL 的库更稳定。Python 更流行,而 CL 更小众。