# Copyright (C) 2001 Python Software Foundation # This file is distributed under the same license as the Python package. # # Translators: # Matt Wang , 2025 msgid "" msgstr "" "Project-Id-Version: Python 3.14\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-09-08 15:25+0800\n" "PO-Revision-Date: 2025-07-13 14:40+0000\n" "Last-Translator: Matt Wang \n" "Language-Team: Chinese - TAIWAN (https://github.com/python/python-docs-zh-" "tw)\n" "Language: zh_TW\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" #: ../../library/code.rst:2 msgid ":mod:`!code` --- Interpreter base classes" msgstr ":mod:`!code` --- 直譯器基底類別" #: ../../library/code.rst:7 msgid "**Source code:** :source:`Lib/code.py`" msgstr "**原始碼:**\\ :source:`Lib/code.py`" #: ../../library/code.rst:11 msgid "" "The ``code`` module provides facilities to implement read-eval-print loops " "in Python. Two classes and convenience functions are included which can be " "used to build applications which provide an interactive interpreter prompt." msgstr "" "``code`` 模組提供在 Python 中實作讀取-求值-印出迴圈(read-eval-print loops)" "的設施。包含兩個類別和便利函式,可用於建立提供互動式直譯器提示的應用程式。" #: ../../library/code.rst:18 msgid "" "This class deals with parsing and interpreter state (the user's namespace); " "it does not deal with input buffering or prompting or input file naming (the " "filename is always passed in explicitly). The optional *locals* argument " "specifies a mapping to use as the namespace in which code will be executed; " "it defaults to a newly created dictionary with key ``'__name__'`` set to " "``'__console__'`` and key ``'__doc__'`` set to ``None``." msgstr "" "這個類別處理剖析和直譯器狀態(使用者的命名空間);它不處理輸入緩衝、提示或輸" "入檔案命名(檔案名稱總是明確傳入)。可選的 *locals* 引數指定一個對映,作為執" "行程式碼的命名空間;它預設為新建立的字典,鍵 ``'__name__'`` 設為 " "``'__console__'`` 而鍵 ``'__doc__'`` 會設為 ``None``。" #: ../../library/code.rst:25 msgid "" "Note that functions and classes objects created under an :class:`!" "InteractiveInterpreter` instance will belong to the namespace specified by " "*locals*. They are only pickleable if *locals* is the namespace of an " "existing module." msgstr "" "請注意,在 :class:`!InteractiveInterpreter` 實例下建立的函式和類別物件將屬於" "由 *locals* 指定的命名空間。只有當 *locals* 是現有模組的命名空間時,它們才會" "是可被 pickle 的。" #: ../../library/code.rst:34 msgid "" "Closely emulate the behavior of the interactive Python interpreter. This " "class builds on :class:`InteractiveInterpreter` and adds prompting using the " "familiar ``sys.ps1`` and ``sys.ps2``, and input buffering. If *local_exit* " "is true, ``exit()`` and ``quit()`` in the console will not " "raise :exc:`SystemExit`, but instead return to the calling code." msgstr "" "近似地模擬出互動式 Python 直譯器的行為。這個類別建立" "在 :class:`InteractiveInterpreter` 的基礎上,並加入使用熟悉的 ``sys.ps1`` 和 " "``sys.ps2`` 的提示,以及輸入緩衝。如果 *local_exit* 為 true,控制台中的 " "``exit()`` 和 ``quit()`` 將不會引發 :exc:`SystemExit`,而是回傳到呼叫程式碼。" #: ../../library/code.rst:40 ../../library/code.rst:58 msgid "Added *local_exit* parameter." msgstr "新增 *local_exit* 參數。" #: ../../library/code.rst:45 msgid "" "Convenience function to run a read-eval-print loop. This creates a new " "instance of :class:`InteractiveConsole` and sets *readfunc* to be used as " "the :meth:`InteractiveConsole.raw_input` method, if provided. If *local* is " "provided, it is passed to the :class:`InteractiveConsole` constructor for " "use as the default namespace for the interpreter loop. If *local_exit* is " "provided, it is passed to the :class:`InteractiveConsole` constructor. " "The :meth:`~InteractiveConsole.interact` method of the instance is then run " "with *banner* and *exitmsg* passed as the banner and exit message to use, if " "provided. The console object is discarded after use." msgstr "" "執行 read-eval-print 迴圈的便利函式。這會建立一" "個 :class:`InteractiveConsole` 的新實例,並設定 *readfunc* 以用" "於 :meth:`InteractiveConsole.raw_input` 方法(如有提供)。如果 *local* 有被提" "供,它會被傳給 :class:`InteractiveConsole` 的建構函式以作為直譯器迴圈的預設命" "名空間。如果有提供 *local_exit*,它會被傳給 :class:`InteractiveConsole` 構建" "函式。然後實例的 :meth:`~InteractiveConsole.interact` 方法會執行,並傳入 " "*banner* 和 *exitmsg* 以作為要使用的橫幅和退出訊息(如有提供)。控制台物件在" "使用後就會被丟棄。" #: ../../library/code.rst:55 msgid "Added *exitmsg* parameter." msgstr "新增 *exitmsg* 參數。" #: ../../library/code.rst:63 msgid "" "This function is useful for programs that want to emulate Python's " "interpreter main loop (a.k.a. the read-eval-print loop). The tricky part is " "to determine when the user has entered an incomplete command that can be " "completed by entering more text (as opposed to a complete command or a " "syntax error). This function *almost* always makes the same decision as the " "real interpreter main loop." msgstr "" "這個函式對於想要模擬 Python 的直譯器主迴圈(即讀取-求值-印出迴圈)的程式很有" "用。最棘手的部分是判斷使用者何時輸入了一個不完整的命令,而這個命令可以透過輸" "入更多文字來完成(相對於完整的命令或語法錯誤)。這個函式\\ *幾乎*\\ 總是做出" "與真正的直譯器主迴圈相同的判斷。" #: ../../library/code.rst:70 msgid "" "*source* is the source string; *filename* is the optional filename from " "which source was read, defaulting to ``''``; and *symbol* is the " "optional grammar start symbol, which should be ``'single'`` (the default), " "``'eval'`` or ``'exec'``." msgstr "" "*source* 是來源字串;*filename* 是讀取來源的可選檔案名稱,預設為 " "``''``;*symbol* 是可選的文法 (grammar) 起始符號,其應為 " "``'single'``\\ (預設值)、``'eval'`` 或 ``'exec'``。" #: ../../library/code.rst:75 msgid "" "Returns a code object (the same as ``compile(source, filename, symbol)``) if " "the command is complete and valid; ``None`` if the command is incomplete; " "raises :exc:`SyntaxError` if the command is complete and contains a syntax " "error, or raises :exc:`OverflowError` or :exc:`ValueError` if the command " "contains an invalid literal." msgstr "" "如果命令完整且有效,則回傳程式碼物件(與 ``compile(source,filename,symbol)`` " "相同);如果命令不完整,則回傳 ``None``;如果命令完整但包含語法錯誤,則引" "發 :exc:`SyntaxError`,如果命令包含無效的字面值 (literal),則引" "發 :exc:`OverflowError` 或 :exc:`ValueError`。" #: ../../library/code.rst:85 msgid "Interactive Interpreter Objects" msgstr "互動式直譯器物件" #: ../../library/code.rst:90 msgid "" "Compile and run some source in the interpreter. Arguments are the same as " "for :func:`compile_command`; the default for *filename* is ``''``, " "and for *symbol* is ``'single'``. One of several things can happen:" msgstr "" "在直譯器中編譯並執行某些原始碼。引數與 :func:`compile_command` 相同;" "*filename* 的預設值是 ``''``,*symbol* 的預設值是 ``'single'``。有幾種" "情況會發生:" #: ../../library/code.rst:94 msgid "" "The input is incorrect; :func:`compile_command` raised an exception " "(:exc:`SyntaxError` or :exc:`OverflowError`). A syntax traceback will be " "printed by calling the :meth:`showsyntaxerror` method. :meth:`runsource` " "returns ``False``." msgstr "" "輸入不正確;:func:`compile_command` 會引發例外(:exc:`SyntaxError` " "或 :exc:`OverflowError`)。語法回溯 (syntax traceback) 會透過呼" "叫 :meth:`showsyntaxerror` 方法來印出。:meth:`runsource` 會回傳 ``False``。" #: ../../library/code.rst:99 msgid "" "The input is incomplete, and more input is required; :func:`compile_command` " "returned ``None``. :meth:`runsource` returns ``True``." msgstr "" "輸入不完整,需要更多輸入;:func:`compile_command` 回傳了 " "``None``。:meth:`runsource` 會回傳 ``True``。" #: ../../library/code.rst:102 msgid "" "The input is complete; :func:`compile_command` returned a code object. The " "code is executed by calling the :meth:`runcode` (which also handles run-time " "exceptions, except for :exc:`SystemExit`). :meth:`runsource` returns " "``False``." msgstr "" "輸入完整;:func:`compile_command` 回傳一個程式碼物件。程式碼會透過呼" "叫 :meth:`runcode` 執行(它也會處理執行時的例外,除 :exc:`SystemExit` 以" "外)。:meth:`runsource` 會回傳 ``False``。" #: ../../library/code.rst:106 msgid "" "The return value can be used to decide whether to use ``sys.ps1`` or " "``sys.ps2`` to prompt the next line." msgstr "回傳值可用來決定是使用 ``sys.ps1`` 還是 ``sys.ps2`` 以提示下一列。" #: ../../library/code.rst:112 msgid "" "Execute a code object. When an exception occurs, :meth:`showtraceback` is " "called to display a traceback. All exceptions are caught " "except :exc:`SystemExit`, which is allowed to propagate." msgstr "" "執行程式碼物件。當例外發生時,會呼叫 :meth:`showtraceback` 來顯示回溯。除" "了 :exc:`SystemExit` 允許繼續傳播之外,所有的例外都會被捕獲。" #: ../../library/code.rst:116 msgid "" "A note about :exc:`KeyboardInterrupt`: this exception may occur elsewhere in " "this code, and may not always be caught. The caller should be prepared to " "deal with it." msgstr "" "關於 :exc:`KeyboardInterrupt` 的注意事項:此例外可能發生在此程式碼的其他地" "方,而且不一定會被捕獲到。呼叫者應該準備好處理它。" #: ../../library/code.rst:123 msgid "" "Display the syntax error that just occurred. This does not display a stack " "trace because there isn't one for syntax errors. If *filename* is given, it " "is stuffed into the exception instead of the default filename provided by " "Python's parser, because it always uses ``''`` when reading from a " "string. The output is written by the :meth:`write` method." msgstr "" "顯示剛剛發生的語法錯誤。這不會顯示堆疊追蹤 (stack trace),因為語法錯誤沒有堆" "疊追蹤。如果給出 *filename*,它會被塞入例外,而不是 Python 剖析器提供的預設檔" "案名稱,因為它從字串讀取時總是使用 ``''``。輸出會由 :meth:`write` 方" "法寫入。" #: ../../library/code.rst:132 msgid "" "Display the exception that just occurred. We remove the first stack item " "because it is within the interpreter object implementation. The output is " "written by the :meth:`write` method." msgstr "" "顯示剛剛發生的例外。我們移除第一個堆疊項目,因為它在直譯器物件的實作範圍內。" "輸出由 :meth:`write` 方法寫入。" #: ../../library/code.rst:136 msgid "" "The full chained traceback is displayed instead of just the primary " "traceback." msgstr "會顯示完整的連鎖回溯記錄,而不只是主要回溯。" #: ../../library/code.rst:142 msgid "" "Write a string to the standard error stream (``sys.stderr``). Derived " "classes should override this to provide the appropriate output handling as " "needed." msgstr "" "寫入字串到標準錯誤串流 (``sys.stderr``)。衍生類別應覆寫此功能,以根據需求提供" "適當的輸出處理。" #: ../../library/code.rst:149 msgid "Interactive Console Objects" msgstr "互動式控制台物件" #: ../../library/code.rst:151 msgid "" "The :class:`InteractiveConsole` class is a subclass " "of :class:`InteractiveInterpreter`, and so offers all the methods of the " "interpreter objects as well as the following additions." msgstr "" ":class:`InteractiveConsole` 類別是 :class:`InteractiveInterpreter` 的子類別," "因此提供了所有直譯器物件的方法以及下列新增的功能。" #: ../../library/code.rst:158 msgid "" "Closely emulate the interactive Python console. The optional *banner* " "argument specify the banner to print before the first interaction; by " "default it prints a banner similar to the one printed by the standard Python " "interpreter, followed by the class name of the console object in parentheses " "(so as not to confuse this with the real interpreter -- since it's so " "close!)." msgstr "" "近似地模擬互動式 Python 控制台。可選的 *banner* 引數指定在第一次互動之前要印" "出的横幅;預設會印出類似標準 Python 直譯器所列印的横幅,接著是控制台物件在括" "弧中的類別名稱 (以免與真正的直譯器混淆 -- 因為它是如此接近!)。" #: ../../library/code.rst:164 msgid "" "The optional *exitmsg* argument specifies an exit message printed when " "exiting. Pass the empty string to suppress the exit message. If *exitmsg* is " "not given or ``None``, a default message is printed." msgstr "" "可選的 *exitmsg* 引數指定退出時列印的退出訊息。傳遞空字串以抑制退出訊息。如果" "沒有給 *exitmsg* 或 ``None``,則會印出預設訊息。" #: ../../library/code.rst:168 msgid "To suppress printing any banner, pass an empty string." msgstr "若要抑制印出任何橫幅,請傳入空字串。" #: ../../library/code.rst:171 msgid "Print an exit message when exiting." msgstr "退出時印出退出訊息。" #: ../../library/code.rst:177 msgid "" "Push a line of source text to the interpreter. The line should not have a " "trailing newline; it may have internal newlines. The line is appended to a " "buffer and the interpreter's :meth:`~InteractiveInterpreter.runsource` " "method is called with the concatenated contents of the buffer as source. If " "this indicates that the command was executed or invalid, the buffer is " "reset; otherwise, the command is incomplete, and the buffer is left as it " "was after the line was appended. The return value is ``True`` if more input " "is required, ``False`` if the line was dealt with in some way (this is the " "same as :meth:`!runsource`)." msgstr "" "推送一行原始文字到直譯器。這一行不應該有尾部換行符號;它可能有內部換行符號。" "這行文字會被附加到緩衝區,並且直譯器" "的 :meth:`~InteractiveInterpreter.runsource` 方法會被呼叫,並以緩衝區的串接內" "容做為原始碼。如果這表示命令已執行或無效,緩衝區會被重設;否則,命令會不完" "整,且緩衝區會保持該行被附加後的樣子。如果需要更多的輸入,回傳值是 ``True``," "如果該行已經以某種方式處理,回傳值是 ``False``\\ (這與 :meth:`!runsource` 相" "同)。" #: ../../library/code.rst:189 msgid "Remove any unhandled source text from the input buffer." msgstr "從輸入緩衝區移除任何未處理的原始文字。" #: ../../library/code.rst:194 msgid "" "Write a prompt and read a line. The returned line does not include the " "trailing newline. When the user enters the EOF key " "sequence, :exc:`EOFError` is raised. The base implementation reads from " "``sys.stdin``; a subclass may replace this with a different implementation." msgstr "" "寫入一個提示並讀取一行。回傳的行不包括尾部的換行符號。當使用者輸入 EOF 鍵序" "時,會引發 :exc:`EOFError`。基底實作會從 ``sys.stdin`` 讀取;子類別可以用不同" "的實作替代。"