interactive.html 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
  6. <meta property="og:title" content="14. Interactive Input Editing and History Substitution" />
  7. <meta property="og:type" content="website" />
  8. <meta property="og:url" content="https://docs.python.org/3/tutorial/interactive.html" />
  9. <meta property="og:site_name" content="Python documentation" />
  10. <meta property="og:description" content="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..." />
  11. <meta property="og:image" content="https://docs.python.org/3/_static/og-image.png" />
  12. <meta property="og:image:alt" content="Python documentation" />
  13. <meta name="description" content="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..." />
  14. <meta property="og:image:width" content="200" />
  15. <meta property="og:image:height" content="200" />
  16. <meta name="theme-color" content="#3776ab" />
  17. <title>14. Interactive Input Editing and History Substitution &#8212; Python 3.12.0 documentation</title><meta name="viewport" content="width=device-width, initial-scale=1.0">
  18. <link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
  19. <link rel="stylesheet" type="text/css" href="../_static/pydoctheme.css?digest=b37c26da2f7529d09fe70b41c4b2133fe4931a90" />
  20. <link id="pygments_dark_css" media="(prefers-color-scheme: dark)" rel="stylesheet" type="text/css" href="../_static/pygments_dark.css" />
  21. <script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
  22. <script src="../_static/jquery.js"></script>
  23. <script src="../_static/underscore.js"></script>
  24. <script src="../_static/doctools.js"></script>
  25. <script src="../_static/sidebar.js"></script>
  26. <link rel="search" type="application/opensearchdescription+xml"
  27. title="Search within Python 3.12.0 documentation"
  28. href="../_static/opensearch.xml"/>
  29. <link rel="author" title="About these documents" href="../about.html" />
  30. <link rel="index" title="Index" href="../genindex.html" />
  31. <link rel="search" title="Search" href="../search.html" />
  32. <link rel="copyright" title="Copyright" href="../copyright.html" />
  33. <link rel="next" title="15. Floating Point Arithmetic: Issues and Limitations" href="floatingpoint.html" />
  34. <link rel="prev" title="13. What Now?" href="whatnow.html" />
  35. <link rel="canonical" href="https://docs.python.org/3/tutorial/interactive.html" />
  36. <style>
  37. @media only screen {
  38. table.full-width-table {
  39. width: 100%;
  40. }
  41. }
  42. </style>
  43. <link rel="stylesheet" href="../_static/pydoctheme_dark.css" media="(prefers-color-scheme: dark)" id="pydoctheme_dark_css">
  44. <link rel="shortcut icon" type="image/png" href="../_static/py.svg" />
  45. <script type="text/javascript" src="../_static/copybutton.js"></script>
  46. <script type="text/javascript" src="../_static/menu.js"></script>
  47. <script type="text/javascript" src="../_static/themetoggle.js"></script>
  48. </head>
  49. <body>
  50. <div class="mobile-nav">
  51. <input type="checkbox" id="menuToggler" class="toggler__input" aria-controls="navigation"
  52. aria-pressed="false" aria-expanded="false" role="button" aria-label="Menu" />
  53. <nav class="nav-content" role="navigation">
  54. <label for="menuToggler" class="toggler__label">
  55. <span></span>
  56. </label>
  57. <span class="nav-items-wrapper">
  58. <a href="https://www.python.org/" class="nav-logo">
  59. <img src="../_static/py.svg" alt="Logo"/>
  60. </a>
  61. <span class="version_switcher_placeholder"></span>
  62. <form role="search" class="search" action="../search.html" method="get">
  63. <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" class="search-icon">
  64. <path fill-rule="nonzero" fill="currentColor" d="M15.5 14h-.79l-.28-.27a6.5 6.5 0 001.48-5.34c-.47-2.78-2.79-5-5.59-5.34a6.505 6.505 0 00-7.27 7.27c.34 2.8 2.56 5.12 5.34 5.59a6.5 6.5 0 005.34-1.48l.27.28v.79l4.25 4.25c.41.41 1.08.41 1.49 0 .41-.41.41-1.08 0-1.49L15.5 14zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"></path>
  65. </svg>
  66. <input placeholder="Quick search" aria-label="Quick search" type="search" name="q" />
  67. <input type="submit" value="Go"/>
  68. </form>
  69. </span>
  70. </nav>
  71. <div class="menu-wrapper">
  72. <nav class="menu" role="navigation" aria-label="main navigation">
  73. <div class="language_switcher_placeholder"></div>
  74. <label class="theme-selector-label">
  75. Theme
  76. <select class="theme-selector" oninput="activateTheme(this.value)">
  77. <option value="auto" selected>Auto</option>
  78. <option value="light">Light</option>
  79. <option value="dark">Dark</option>
  80. </select>
  81. </label>
  82. <div>
  83. <h3><a href="../contents.html">Table of Contents</a></h3>
  84. <ul>
  85. <li><a class="reference internal" href="#">14. Interactive Input Editing and History Substitution</a><ul>
  86. <li><a class="reference internal" href="#tab-completion-and-history-editing">14.1. Tab Completion and History Editing</a></li>
  87. <li><a class="reference internal" href="#alternatives-to-the-interactive-interpreter">14.2. Alternatives to the Interactive Interpreter</a></li>
  88. </ul>
  89. </li>
  90. </ul>
  91. </div>
  92. <div>
  93. <h4>Previous topic</h4>
  94. <p class="topless"><a href="whatnow.html"
  95. title="previous chapter"><span class="section-number">13. </span>What Now?</a></p>
  96. </div>
  97. <div>
  98. <h4>Next topic</h4>
  99. <p class="topless"><a href="floatingpoint.html"
  100. title="next chapter"><span class="section-number">15. </span>Floating Point Arithmetic: Issues and Limitations</a></p>
  101. </div>
  102. <div role="note" aria-label="source link">
  103. <h3>This Page</h3>
  104. <ul class="this-page-menu">
  105. <li><a href="../bugs.html">Report a Bug</a></li>
  106. <li>
  107. <a href="https://github.com/python/cpython/blob/main/Doc/tutorial/interactive.rst"
  108. rel="nofollow">Show Source
  109. </a>
  110. </li>
  111. </ul>
  112. </div>
  113. </nav>
  114. </div>
  115. </div>
  116. <div class="related" role="navigation" aria-label="related navigation">
  117. <h3>Navigation</h3>
  118. <ul>
  119. <li class="right" style="margin-right: 10px">
  120. <a href="../genindex.html" title="General Index"
  121. accesskey="I">index</a></li>
  122. <li class="right" >
  123. <a href="../py-modindex.html" title="Python Module Index"
  124. >modules</a> |</li>
  125. <li class="right" >
  126. <a href="floatingpoint.html" title="15. Floating Point Arithmetic: Issues and Limitations"
  127. accesskey="N">next</a> |</li>
  128. <li class="right" >
  129. <a href="whatnow.html" title="13. What Now?"
  130. accesskey="P">previous</a> |</li>
  131. <li><img src="../_static/py.svg" alt="python logo" style="vertical-align: middle; margin-top: -1px"/></li>
  132. <li><a href="https://www.python.org/">Python</a> &#187;</li>
  133. <li class="switchers">
  134. <div class="language_switcher_placeholder"></div>
  135. <div class="version_switcher_placeholder"></div>
  136. </li>
  137. <li>
  138. </li>
  139. <li id="cpython-language-and-version">
  140. <a href="../index.html">3.12.0 Documentation</a> &#187;
  141. </li>
  142. <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">The Python Tutorial</a> &#187;</li>
  143. <li class="nav-item nav-item-this"><a href=""><span class="section-number">14. </span>Interactive Input Editing and History Substitution</a></li>
  144. <li class="right">
  145. <div class="inline-search" role="search">
  146. <form class="inline-search" action="../search.html" method="get">
  147. <input placeholder="Quick search" aria-label="Quick search" type="search" name="q" />
  148. <input type="submit" value="Go" />
  149. </form>
  150. </div>
  151. |
  152. </li>
  153. <li class="right">
  154. <label class="theme-selector-label">
  155. Theme
  156. <select class="theme-selector" oninput="activateTheme(this.value)">
  157. <option value="auto" selected>Auto</option>
  158. <option value="light">Light</option>
  159. <option value="dark">Dark</option>
  160. </select>
  161. </label> |</li>
  162. </ul>
  163. </div>
  164. <div class="document">
  165. <div class="documentwrapper">
  166. <div class="bodywrapper">
  167. <div class="body" role="main">
  168. <section id="interactive-input-editing-and-history-substitution">
  169. <span id="tut-interacting"></span><h1><span class="section-number">14. </span>Interactive Input Editing and History Substitution<a class="headerlink" href="#interactive-input-editing-and-history-substitution" title="Permalink to this headline">¶</a></h1>
  170. <p>Some versions of the Python interpreter support editing of the current input
  171. line and history substitution, similar to facilities found in the Korn shell and
  172. the GNU Bash shell. This is implemented using the <a class="reference external" href="https://tiswww.case.edu/php/chet/readline/rltop.html">GNU Readline</a> library,
  173. which supports various styles of editing. This library has its own
  174. documentation which we won’t duplicate here.</p>
  175. <section id="tab-completion-and-history-editing">
  176. <span id="tut-keybindings"></span><h2><span class="section-number">14.1. </span>Tab Completion and History Editing<a class="headerlink" href="#tab-completion-and-history-editing" title="Permalink to this headline">¶</a></h2>
  177. <p>Completion of variable and module names is
  178. <a class="reference internal" href="../library/site.html#rlcompleter-config"><span class="std std-ref">automatically enabled</span></a> at interpreter startup so
  179. that the <kbd class="kbd docutils literal notranslate">Tab</kbd> key invokes the completion function; it looks at
  180. Python statement names, the current local variables, and the available
  181. module names. For dotted expressions such as <code class="docutils literal notranslate"><span class="pre">string.a</span></code>, it will evaluate
  182. the expression up to the final <code class="docutils literal notranslate"><span class="pre">'.'</span></code> and then suggest completions from
  183. the attributes of the resulting object. Note that this may execute
  184. application-defined code if an object with a <a class="reference internal" href="../reference/datamodel.html#object.__getattr__" title="object.__getattr__"><code class="xref py py-meth docutils literal notranslate"><span class="pre">__getattr__()</span></code></a> method
  185. is part of the expression. The default configuration also saves your
  186. history into a file named <code class="file docutils literal notranslate"><span class="pre">.python_history</span></code> in your user directory.
  187. The history will be available again during the next interactive interpreter
  188. session.</p>
  189. </section>
  190. <section id="alternatives-to-the-interactive-interpreter">
  191. <span id="tut-commentary"></span><h2><span class="section-number">14.2. </span>Alternatives to the Interactive Interpreter<a class="headerlink" href="#alternatives-to-the-interactive-interpreter" title="Permalink to this headline">¶</a></h2>
  192. <p>This facility is an enormous step forward compared to earlier versions of the
  193. interpreter; however, some wishes are left: It would be nice if the proper
  194. indentation were suggested on continuation lines (the parser knows if an indent
  195. token is required next). The completion mechanism might use the interpreter’s
  196. symbol table. A command to check (or even suggest) matching parentheses,
  197. quotes, etc., would also be useful.</p>
  198. <p>One alternative enhanced interactive interpreter that has been around for quite
  199. some time is <a class="reference external" href="https://ipython.org/">IPython</a>, which features tab completion, object exploration and
  200. advanced history management. It can also be thoroughly customized and embedded
  201. into other applications. Another similar enhanced interactive environment is
  202. <a class="reference external" href="https://www.bpython-interpreter.org/">bpython</a>.</p>
  203. </section>
  204. </section>
  205. <div class="clearer"></div>
  206. </div>
  207. </div>
  208. </div>
  209. <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
  210. <div class="sphinxsidebarwrapper">
  211. <div>
  212. <h3><a href="../contents.html">Table of Contents</a></h3>
  213. <ul>
  214. <li><a class="reference internal" href="#">14. Interactive Input Editing and History Substitution</a><ul>
  215. <li><a class="reference internal" href="#tab-completion-and-history-editing">14.1. Tab Completion and History Editing</a></li>
  216. <li><a class="reference internal" href="#alternatives-to-the-interactive-interpreter">14.2. Alternatives to the Interactive Interpreter</a></li>
  217. </ul>
  218. </li>
  219. </ul>
  220. </div>
  221. <div>
  222. <h4>Previous topic</h4>
  223. <p class="topless"><a href="whatnow.html"
  224. title="previous chapter"><span class="section-number">13. </span>What Now?</a></p>
  225. </div>
  226. <div>
  227. <h4>Next topic</h4>
  228. <p class="topless"><a href="floatingpoint.html"
  229. title="next chapter"><span class="section-number">15. </span>Floating Point Arithmetic: Issues and Limitations</a></p>
  230. </div>
  231. <div role="note" aria-label="source link">
  232. <h3>This Page</h3>
  233. <ul class="this-page-menu">
  234. <li><a href="../bugs.html">Report a Bug</a></li>
  235. <li>
  236. <a href="https://github.com/python/cpython/blob/main/Doc/tutorial/interactive.rst"
  237. rel="nofollow">Show Source
  238. </a>
  239. </li>
  240. </ul>
  241. </div>
  242. </div>
  243. </div>
  244. <div class="clearer"></div>
  245. </div>
  246. <div class="related" role="navigation" aria-label="related navigation">
  247. <h3>Navigation</h3>
  248. <ul>
  249. <li class="right" style="margin-right: 10px">
  250. <a href="../genindex.html" title="General Index"
  251. >index</a></li>
  252. <li class="right" >
  253. <a href="../py-modindex.html" title="Python Module Index"
  254. >modules</a> |</li>
  255. <li class="right" >
  256. <a href="floatingpoint.html" title="15. Floating Point Arithmetic: Issues and Limitations"
  257. >next</a> |</li>
  258. <li class="right" >
  259. <a href="whatnow.html" title="13. What Now?"
  260. >previous</a> |</li>
  261. <li><img src="../_static/py.svg" alt="python logo" style="vertical-align: middle; margin-top: -1px"/></li>
  262. <li><a href="https://www.python.org/">Python</a> &#187;</li>
  263. <li class="switchers">
  264. <div class="language_switcher_placeholder"></div>
  265. <div class="version_switcher_placeholder"></div>
  266. </li>
  267. <li>
  268. </li>
  269. <li id="cpython-language-and-version">
  270. <a href="../index.html">3.12.0 Documentation</a> &#187;
  271. </li>
  272. <li class="nav-item nav-item-1"><a href="index.html" >The Python Tutorial</a> &#187;</li>
  273. <li class="nav-item nav-item-this"><a href=""><span class="section-number">14. </span>Interactive Input Editing and History Substitution</a></li>
  274. <li class="right">
  275. <div class="inline-search" role="search">
  276. <form class="inline-search" action="../search.html" method="get">
  277. <input placeholder="Quick search" aria-label="Quick search" type="search" name="q" />
  278. <input type="submit" value="Go" />
  279. </form>
  280. </div>
  281. |
  282. </li>
  283. <li class="right">
  284. <label class="theme-selector-label">
  285. Theme
  286. <select class="theme-selector" oninput="activateTheme(this.value)">
  287. <option value="auto" selected>Auto</option>
  288. <option value="light">Light</option>
  289. <option value="dark">Dark</option>
  290. </select>
  291. </label> |</li>
  292. </ul>
  293. </div>
  294. <div class="footer">
  295. &copy; <a href="../copyright.html">Copyright</a> 2001-2023, Python Software Foundation.
  296. <br />
  297. This page is licensed under the Python Software Foundation License Version 2.
  298. <br />
  299. Examples, recipes, and other code in the documentation are additionally licensed under the Zero Clause BSD License.
  300. <br />
  301. See <a href="/license.html">History and License</a> for more information.<br />
  302. <br />
  303. The Python Software Foundation is a non-profit corporation.
  304. <a href="https://www.python.org/psf/donations/">Please donate.</a>
  305. <br />
  306. <br />
  307. Last updated on Oct 02, 2023.
  308. <a href="/bugs.html">Found a bug</a>?
  309. <br />
  310. Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 4.5.0.
  311. </div>
  312. </body>
  313. </html>