<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ### 13. 交互式輸入的編輯和歷史記錄 某些版本的 Python 解釋器支持編輯當前的輸入行和歷史記錄,類似于在 Korn shell 和 GNU Bash shell 中看到的功能。這是使用[GNU Readline](http://tiswww.case.edu/php/chet/readline/rltop.html)庫實現的,它支持 Emacs 風格和 vi 風格的編輯。這個庫有它自己的文檔,在這里我不就重復了;然而,基本原理很容易解釋。本章講述的交互式編輯和歷史記錄功能在 Unix 版本和 Cygwin 版本中是可選的。 本章*不* 是Mark Hammond的 PythonWin 包或者隨 Python 一起發布的基于 TK 的 IDLE 環境的文檔。基于 NT 系統的DOS和其它 DOS、Windows 系統上的命令行歷史回溯是另一個話題。 ### 13.1. 行編輯 如果支持,無論解釋器打印主提示符還是從屬提示符,輸入行一直都可以編輯。可以使用傳統的Emacs控制字符編輯當前行。其中最重要的是:C-A (Control-A)將光標移動到行首,C-E移到行尾,C-B將光標向左移動一個位置,C-F向右移動一個位置。退格鍵刪除光標左側的字符,C-D刪除光標右側的字符。C-k刪掉一行中光標右側的所有字符,C-y將最后一次刪除的字符串粘貼到光標位置。C-下劃線將撤消最近一次的更改;它可以重復執行并產生累積效果。 ### 13.2. 歷史記錄 歷史記錄的工作方式如下。所有的非空輸入行都保存在歷史記錄緩沖區中,當給出一個新的提示符時,你位于緩沖區最底部新的一行。C-P向上(往回)移動歷史記錄緩沖區中的一行,C-N向下移動一行。歷史記錄緩沖區中的任何一行都可以編輯;提示符的前面用一個星號標記修改的行。按Return鍵會將當前行傳遞給解釋器。C-R開始逐漸向后搜索;C-S開始向前搜索。 ### 13.3. 快捷鍵綁定 通過將命令放在一個名為~/.inputrc的初始化文件中,可以自定義快捷鍵和Readline 庫的一些其他參數。快捷鍵綁定有如下方式 ~~~ key-name: function-name ~~~ 或 ~~~ "string": function-name ~~~ 也可以設置選項 ~~~ set option-name value ~~~ 例如: ~~~ # I prefer vi-style editing: set editing-mode vi # Edit using a single line: set horizontal-scroll-mode On # Rebind some keys: Meta-h: backward-kill-word "\C-u": universal-argument "\C-x\C-r": re-read-init-file ~~~ 注意 Python 中Tab鍵默認綁定的是插入一個制表符而不是 Readline 的默認文件名補全功能。如果你堅持這樣做,你可以放置一行 ~~~ Tab: complete ~~~ 在你的~/.inputrc中。(當然,如果你習慣使用Tab作為縮進,這會使得輸入續行的縮進很困難。) 可以選擇變量和模塊名自動補全功能。若要在解釋器的交互模式中啟用這個功能,添加以下內容到你的啟動文件:[[1]](#) ~~~ import rlcompleter, readline readline.parse_and_bind('tab: complete') ~~~ 這將Tab鍵綁定到補全功能,所以按Tab鍵兩次將會給出補全的建議;它會查找 Python 語句名稱、當前的局部變量以及有效的模塊名。例如點分表達式string.a,它會先解析最后一個點'.'之前的表達式,然后根據結果對象給出建議補全的內容。注意如果表達式得到的對象帶有[__getattr__()](# "object.__getattr__")方法,這可能會執行應用程序定義的代碼。 更有用的啟動文件可能看起來像下面這個示例。注意下面的示例刪除了它創建的名稱,一旦這些名稱不再需要;這是因為啟動文件與交互式命令在相同的命名空間中執行,刪除這些名稱可以避免在交互式環境中產生副作用。你可能發現保留一些導入的模塊有時也會很方便,例如[os](# "os: Miscellaneous operating system interfaces."),因為在大多數與解釋器的交互中都需要它。 ~~~ # Add auto-completion and a stored history file of commands to your Python # interactive interpreter. Requires Python 2.0+, readline. Autocomplete is # bound to the Esc key by default (you can change it - see readline docs). # # Store the file in ~/.pystartup, and set an environment variable to point # to it: "export PYTHONSTARTUP=~/.pystartup" in bash. import atexit import os import readline import rlcompleter historyPath = os.path.expanduser("~/.pyhistory") def save_history(historyPath=historyPath): import readline readline.write_history_file(historyPath) if os.path.exists(historyPath): readline.read_history_file(historyPath) atexit.register(save_history) del os, atexit, readline, rlcompleter, save_history, historyPath ~~~ ### 13.4. 其它交互式解釋器 與早期版本的解釋器相比,現在是向前巨大的進步;然而,有些愿望還是沒有實現:如果能對連續的行給出正確的建議就更好了(解析器知道下一行是否需要縮進)。補全機制可以使用解釋器的符號表。檢查(或者只是建議)匹配的括號、 引號的命令等也會非常有用。 一個增強的交互式解釋器是[IPython](http://ipython.scipy.org/),它已經存在相當一段時間,具有tab補全、 對象exploration 和高級的歷史記錄功能。它也可以徹底定制并嵌入到其他應用程序中。另一個類似的增強的交互式環境是[bpython](http://www.bpython-interpreter.org/)。 腳注 | [[1]](#) | 當你啟動一個交互式解釋器時,Python將執行環境變量[PYTHONSTARTUP](#)指定的文件中的內容。若還要定制化非交互式的Python,請參閱[*定制化模塊*](#)。 | |-----|-----|
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看