Let's write a Lisp interpreter
One of the best way to understand how programming languages work (including Python), is to implement one.
Greenspun's tenth rule states that Any sufficiently complicated C or Fortran program contains an ad-hoc, informally-specified, bug-ridden, slow implementation of half of Common Lisp.. Understanding how programming language work will make you a better programmer and gain a better understanding of Python itself.
We'll implement a small lisp like language and discuss language design & implementation issues and how they are found in Python. - Lexing & Parsing: What are the implication of Python using whitespace for indentation? - Variable scope & closures: Why we have global and nonlocal in Python - Types: Why the value of 1/2 changed from Python 2 to 3 - Evaluating code: Python's eval vs exec and byte code interpreter. Why does or and and short curcuit