mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 03:44:55 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			54 lines
		
	
	
	
		
			2.4 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
			
		
		
	
	
			54 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:`__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/
 |