| .. _tut-interacting: |
| |
| ************************************************** |
| Interactive Input Editing and History Substitution |
| ************************************************** |
| |
| Some versions of the Python interpreter support editing of the current input |
| line and history substitution, similar to facilities found in the Korn shell and |
| the GNU Bash shell. This is implemented using the `GNU Readline`_ library, |
| which supports various styles of editing. This library has its own |
| documentation which we won't duplicate here. |
| |
| |
| .. _tut-keybindings: |
| |
| Tab Completion and History Editing |
| ================================== |
| |
| Completion of variable and module names is |
| :ref:`automatically enabled <rlcompleter-config>` at interpreter startup so |
| that the :kbd:`Tab` key invokes the completion function; it looks at |
| Python statement names, the current local variables, and the available |
| module names. For dotted expressions such as ``string.a``, it will evaluate |
| the expression up to the final ``'.'`` and then suggest completions from |
| the attributes of the resulting object. Note that this may execute |
| application-defined code if an object with a :meth:`__getattr__` method |
| is part of the expression. The default configuration also saves your |
| history into a file named :file:`.python_history` in your user directory. |
| The history will be available again during the next interactive interpreter |
| session. |
| |
| |
| .. _tut-commentary: |
| |
| Alternatives to the Interactive Interpreter |
| =========================================== |
| |
| This facility is an enormous step forward compared to earlier versions of the |
| interpreter; however, some wishes are left: It would be nice if the proper |
| indentation were suggested on continuation lines (the parser knows if an indent |
| token is required next). The completion mechanism might use the interpreter's |
| symbol table. A command to check (or even suggest) matching parentheses, |
| quotes, etc., would also be useful. |
| |
| One alternative enhanced interactive interpreter that has been around for quite |
| some time is IPython_, which features tab completion, object exploration and |
| advanced history management. It can also be thoroughly customized and embedded |
| into other applications. Another similar enhanced interactive environment is |
| bpython_. |
| |
| |
| .. _GNU Readline: https://tiswww.case.edu/php/chet/readline/rltop.html |
| .. _IPython: https://ipython.org/ |
| .. _bpython: https://www.bpython-interpreter.org/ |