mirror of
https://github.com/python/cpython.git
synced 2024-11-30 21:34:17 +08:00
55 lines
2.4 KiB
ReStructuredText
55 lines
2.4 KiB
ReStructuredText
.. _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:`~object.__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://bpython-interpreter.org/
|