Thank you also for the mention of Emacs. After six years of using Emacs with a lisp REPL, where I could scroll back through function definitions and edit them in place, I feel distinct frustration every single time I use a Python REPL. One-line-at-a-time scrollback is absolutely frustrating.