# SOME DESCRIPTIVE TITLE. # Copyright (C) 2001-2022, Python Software Foundation # This file is distributed under the same license as the Python package. # # Translators: # woodrow-shen , 2016 # machineCYC, 2018 # Steven Hsu , 2021 msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-07-23 00:17+0000\n" "PO-Revision-Date: 2021-06-19 14:24+0800\n" "Last-Translator: Adrian Liaw \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" "X-Generator: Poedit 2.4.3\n" #: ../../tutorial/stdlib2.rst:5 msgid "Brief Tour of the Standard Library --- Part II" msgstr "Python 標準函式庫概覽——第二部份" #: ../../tutorial/stdlib2.rst:7 msgid "" "This second tour covers more advanced modules that support professional " "programming needs. These modules rarely occur in small scripts." msgstr "" "第二部分涵蓋更多支援專業程式設計所需要的進階模組。這些模組很少出現在小腳本" "中。" #: ../../tutorial/stdlib2.rst:14 msgid "Output Formatting" msgstr "輸出格式化 (Output Formatting)" #: ../../tutorial/stdlib2.rst:16 msgid "" "The :mod:`reprlib` module provides a version of :func:`repr` customized for " "abbreviated displays of large or deeply nested containers::" msgstr "" ":mod:`reprlib` 模組提供了一個 :func:`repr` 的版本,專門用來以簡短的形式顯示大" "型或深層的巢狀容器:\n" "\n" "::" #: ../../tutorial/stdlib2.rst:23 msgid "" "The :mod:`pprint` module offers more sophisticated control over printing " "both built-in and user defined objects in a way that is readable by the " "interpreter. When the result is longer than one line, the \"pretty printer\" " "adds line breaks and indentation to more clearly reveal data structure::" msgstr "" ":mod:`pprint` 模組能對內建和使用者自定的物件提供更複雜的列印控制,並且是以直" "譯器可讀的方式。當結果超過一行時,「漂亮的印表機」會加入換行和縮排,以更清楚" "地顯示資料結構:\n" "\n" "::" #: ../../tutorial/stdlib2.rst:39 msgid "" "The :mod:`textwrap` module formats paragraphs of text to fit a given screen " "width::" msgstr "" ":mod:`textwrap` 模組能夠格式化文本的段落,以符合指定的螢幕寬度:\n" "\n" "::" #: ../../tutorial/stdlib2.rst:53 msgid "" "The :mod:`locale` module accesses a database of culture specific data " "formats. The grouping attribute of locale's format function provides a " "direct way of formatting numbers with group separators::" msgstr "" ":mod:`locale` 模組能存取一個含有特定文化相關資料格式的資料庫。locale 模組的 " "format 函式有一個 grouping 屬性,可直接以群分隔符 (group separator) 將數字格" "式化:\n" "\n" "::" #: ../../tutorial/stdlib2.rst:72 msgid "Templating" msgstr "模板化 (Templating)" #: ../../tutorial/stdlib2.rst:74 msgid "" "The :mod:`string` module includes a versatile :class:`~string.Template` " "class with a simplified syntax suitable for editing by end-users. This " "allows users to customize their applications without having to alter the " "application." msgstr "" ":mod:`string` 模組包含一個多功能的 :class:`~string.Template` class,提供的簡" "化語法適合使用者進行編輯時使用。它容許使用者客製化自己的應用程式,但不必對原" "應用程式做出變更。" #: ../../tutorial/stdlib2.rst:78 msgid "" "The format uses placeholder names formed by ``$`` with valid Python " "identifiers (alphanumeric characters and underscores). Surrounding the " "placeholder with braces allows it to be followed by more alphanumeric " "letters with no intervening spaces. Writing ``$$`` creates a single escaped " "``$``::" msgstr "" "格式化方式是使用佔位符號名稱 (placeholder name),它是由 ``$`` 加上合法的 " "Python 識別符(字母、數字和下底線)構成。使用大括號包覆佔位符號以允許在後面接" "上更多的字母和數字而無需插入空格。使用 ``$$`` 將會跳脫為單一字元 `$`:\n" "\n" "::" #: ../../tutorial/stdlib2.rst:88 msgid "" "The :meth:`~string.Template.substitute` method raises a :exc:`KeyError` when " "a placeholder is not supplied in a dictionary or a keyword argument. For " "mail-merge style applications, user supplied data may be incomplete and the :" "meth:`~string.Template.safe_substitute` method may be more appropriate --- " "it will leave placeholders unchanged if data is missing::" msgstr "" "如果在 dictionary 或關鍵字引數中未提供某個佔位符號的值,那麼 :meth:`~string." "Template.substitute` method 將引發 :exc:`KeyError`\\ 。對於郵件合併 (mail-" "merge) 類型的應用程式,使用者提供的資料有可能是不完整的,此時使用 :meth:" "`~string.Template.safe_substitute` method 會更適當——如果資料有缺少,它會保持" "佔位符號不變:\n" "\n" "::" #: ../../tutorial/stdlib2.rst:103 msgid "" "Template subclasses can specify a custom delimiter. For example, a batch " "renaming utility for a photo browser may elect to use percent signs for " "placeholders such as the current date, image sequence number, or file " "format::" msgstr "" "Template 的 subclass(子類別)可以指定自訂的分隔符號 (delimiter)。例如,一個" "相片瀏覽器的批次重新命名功能,可以選擇用百分號作為現在日期、照片序號或檔案格" "式的佔位符號:\n" "\n" "::" #: ../../tutorial/stdlib2.rst:126 msgid "" "Another application for templating is separating program logic from the " "details of multiple output formats. This makes it possible to substitute " "custom templates for XML files, plain text reports, and HTML web reports." msgstr "" "模板化的另一個應用,是將程式邏輯與多樣的輸出格式細節分離開來。這樣就可以為 " "XML 檔案、純文字報表和 HTML 網路報表替換自訂的模板。" #: ../../tutorial/stdlib2.rst:134 msgid "Working with Binary Data Record Layouts" msgstr "二進制資料記錄編排 (Binary Data Record Layouts)" #: ../../tutorial/stdlib2.rst:136 msgid "" "The :mod:`struct` module provides :func:`~struct.pack` and :func:`~struct." "unpack` functions for working with variable length binary record formats. " "The following example shows how to loop through header information in a ZIP " "file without using the :mod:`zipfile` module. Pack codes ``\"H\"`` and " "``\"I\"`` represent two and four byte unsigned numbers respectively. The " "``\"<\"`` indicates that they are standard size and in little-endian byte " "order::" msgstr "" ":mod:`struct` 模組提供了 :func:`~struct.pack` 和 :func:`~struct.unpack` 函" "式,用於處理可變動長度的二進制記錄格式。以下範例說明,如何在不使用 :mod:" "`zipfile` 模組的情況下,使用迴圈瀏覽一個 ZIP 檔案中的標頭資訊 (header " "information)。壓縮程式碼 ``\"H\"`` 和 ``\"I\"`` 分別代表兩個和四個位元組的無" "符號數 (unsigned number)。\\ ``\"<\"`` 表示它們是標準大小,並使用小端 " "(little-endian) 位元組順序:\n" "\n" "::" #: ../../tutorial/stdlib2.rst:167 msgid "Multi-threading" msgstr "多執行緒 (Multi-threading)" #: ../../tutorial/stdlib2.rst:169 msgid "" "Threading is a technique for decoupling tasks which are not sequentially " "dependent. Threads can be used to improve the responsiveness of " "applications that accept user input while other tasks run in the " "background. A related use case is running I/O in parallel with computations " "in another thread." msgstr "" "執行緒是一種用來對非順序相依 (sequentially dependent) 的多個任務進行解耦 " "(decoupling) 的技術。當其他任務在背景執行時,多執行緒可以用來提升應用程式在接" "收使用者輸入時的反應能力。一個相關的用例是,運行 I/O 的同時,在另一個執行緒中" "進行計算。" #: ../../tutorial/stdlib2.rst:174 msgid "" "The following code shows how the high level :mod:`threading` module can run " "tasks in background while the main program continues to run::" msgstr "" "以下程式碼顯示了高階的 :mod:`threading` 模組如何在背景運行任務,而主程式同時" "繼續運行:\n" "\n" "::" #: ../../tutorial/stdlib2.rst:198 msgid "" "The principal challenge of multi-threaded applications is coordinating " "threads that share data or other resources. To that end, the threading " "module provides a number of synchronization primitives including locks, " "events, condition variables, and semaphores." msgstr "" "多執行緒應用程式的主要挑戰是,要協調多個彼此共享資料或資源的執行緒。為此," "threading 模組提供了多個同步處理原始物件 (synchronization primitive),包括鎖 " "(lock)、事件 (event)、條件變數 (condition variable) 和號誌 (semaphore)。" #: ../../tutorial/stdlib2.rst:203 msgid "" "While those tools are powerful, minor design errors can result in problems " "that are difficult to reproduce. So, the preferred approach to task " "coordination is to concentrate all access to a resource in a single thread " "and then use the :mod:`queue` module to feed that thread with requests from " "other threads. Applications using :class:`~queue.Queue` objects for inter-" "thread communication and coordination are easier to design, more readable, " "and more reliable." msgstr "" "儘管這些工具很強大,但很小的設計錯誤也可能導致一些難以重現的問題。所以,任務" "協調的首選方法是,把所有對資源的存取集中到單一的執行緒中,然後使用 :mod:" "`queue` 模組向該執行緒饋送來自其他執行緒的請求。應用程式若使用 :class:" "`~queue.Queue` 物件進行執行緒間的通信和協調,會更易於設計、更易讀、更可靠。" #: ../../tutorial/stdlib2.rst:214 msgid "Logging" msgstr "日誌記錄 (Logging)" #: ../../tutorial/stdlib2.rst:216 msgid "" "The :mod:`logging` module offers a full featured and flexible logging " "system. At its simplest, log messages are sent to a file or to ``sys." "stderr``::" msgstr "" ":mod:`logging` 模組提供功能齊全且富彈性的日誌記錄系統。在最簡單的情況下,日誌" "訊息會被發送到檔案或 ``sys.stderr``:\n" "\n" "::" #: ../../tutorial/stdlib2.rst:226 msgid "This produces the following output:" msgstr "這會產生以下輸出:" #: ../../tutorial/stdlib2.rst:234 msgid "" "By default, informational and debugging messages are suppressed and the " "output is sent to standard error. Other output options include routing " "messages through email, datagrams, sockets, or to an HTTP Server. New " "filters can select different routing based on message priority: :const:" "`~logging.DEBUG`, :const:`~logging.INFO`, :const:`~logging.WARNING`, :const:" "`~logging.ERROR`, and :const:`~logging.CRITICAL`." msgstr "" "在預設情況,資訊和除錯訊息不會被顯示,其輸出會被發送到標準錯誤 (standard " "error)。其他輸出選項包括,將訊息轉發到電子郵件、資料報 (datagram)、網路插座 " "(socket) 或 HTTP 伺服器。新的過濾器可以根據訊息的優先順序,選擇不同的路由 " "(routing) 方式:\\ :const:`~logging.DEBUG`\\ ,\\ :const:`~logging." "INFO`\\ ,\\ :const:`~logging.WARNING`\\ ,\\ :const:`~logging.ERROR`\\ ," "及 :const:`~logging.CRITICAL`\\ 。" #: ../../tutorial/stdlib2.rst:241 msgid "" "The logging system can be configured directly from Python or can be loaded " "from a user editable configuration file for customized logging without " "altering the application." msgstr "" "日誌記錄系統可以直接從 Python 配置,也可以透過載入使用者可編輯的配置檔案以進" "行客製化的日誌記錄,而無須對應用程式做出變更。" #: ../../tutorial/stdlib2.rst:249 msgid "Weak References" msgstr "弱引用 (Weak References)" #: ../../tutorial/stdlib2.rst:251 msgid "" "Python does automatic memory management (reference counting for most objects " "and :term:`garbage collection` to eliminate cycles). The memory is freed " "shortly after the last reference to it has been eliminated." msgstr "" "Python 會自動進行記憶體管理(對大多數物件進行參照計數 (reference counting) 並" "使用 :term:`garbage collection` 來消除循環參照)。當一個參照從記憶體被移除後" "不久,該記憶體就會被釋出。" #: ../../tutorial/stdlib2.rst:255 msgid "" "This approach works fine for most applications but occasionally there is a " "need to track objects only as long as they are being used by something else. " "Unfortunately, just tracking them creates a reference that makes them " "permanent. The :mod:`weakref` module provides tools for tracking objects " "without creating a reference. When the object is no longer needed, it is " "automatically removed from a weakref table and a callback is triggered for " "weakref objects. Typical applications include caching objects that are " "expensive to create::" msgstr "" "此方式對大多數應用程式來說都沒問題,但偶爾也需要在物件仍然被其他物件所使用時" "持續追蹤它們。可惜的是,儘管只是追蹤它們,也會建立一個使它們永久化 " "(permanent) 的參照。\\ :mod:`weakref` 模組提供的工具可以不必建立參照就能追蹤" "物件。當該物件不再被需要時,它會自動從一個弱引用表 (weakref table) 中被移除," "並為弱引用物件觸發一個回呼 (callback)。典型的應用包括暫存 (cache) 那些成本較" "為昂貴的物件:\n" "\n" "::" #: ../../tutorial/stdlib2.rst:290 msgid "Tools for Working with Lists" msgstr "使用於 List 的工具" #: ../../tutorial/stdlib2.rst:292 msgid "" "Many data structure needs can be met with the built-in list type. However, " "sometimes there is a need for alternative implementations with different " "performance trade-offs." msgstr "" "許多對於資料結構的需求,可以透過內建的 list(串列)型別來滿足。但是,有時也會" "根據效能的各種取捨,需要一些替代的實作。" #: ../../tutorial/stdlib2.rst:296 msgid "" "The :mod:`array` module provides an :class:`~array.array()` object that is " "like a list that stores only homogeneous data and stores it more compactly. " "The following example shows an array of numbers stored as two byte unsigned " "binary numbers (typecode ``\"H\"``) rather than the usual 16 bytes per entry " "for regular lists of Python int objects::" msgstr "" ":mod:`array` 模組提供了一個 :class:`~array.array()` 物件,它像是 list,但只能" "儲存同類的資料且能緊密地儲存。下面的範例展示一個數值陣列 (array),以兩個位元" "組的無符號二進數 (unsigned binary numbers) 為儲存單位(類型碼為 ``\"H\"``)," "而在 Python 整數物件的正規 list 中,每個項目通常使用 16 個位元組:\n" "\n" "::" #: ../../tutorial/stdlib2.rst:309 msgid "" "The :mod:`collections` module provides a :class:`~collections.deque()` " "object that is like a list with faster appends and pops from the left side " "but slower lookups in the middle. These objects are well suited for " "implementing queues and breadth first tree searches::" msgstr "" ":mod:`collections` 模組提供了一個 :class:`~collections.deque()` 物件,它像是 " "list,但從左側加入 (append) 和彈出 (pop) 的速度較快,而在中間查找的速度則較" "慢。這種物件適用於實作佇列 (queue) 和廣度優先搜尋法 (breadth first tree " "search):\n" "\n" "::" #: ../../tutorial/stdlib2.rst:330 msgid "" "In addition to alternative list implementations, the library also offers " "other tools such as the :mod:`bisect` module with functions for manipulating " "sorted lists::" msgstr "" "除了替代的 list 實作以外,函式庫也提供了其他工具,例如 :mod:`bisect` 模組,具" "有能夠操作 sorted list(已排序串列)的函式:\n" "\n" "::" #: ../../tutorial/stdlib2.rst:340 msgid "" "The :mod:`heapq` module provides functions for implementing heaps based on " "regular lists. The lowest valued entry is always kept at position zero. " "This is useful for applications which repeatedly access the smallest element " "but do not want to run a full list sort::" msgstr "" ":mod:`heapq` 模組提供了一些函式,能基於正規 list 來實作堆積 (heap)。最小值的" "項目會永遠保持在位置零。對於一些需要多次存取最小元素,但不想要對整個 list 進" "行排序的應用程式來說,這會很有用:\n" "\n" "::" #: ../../tutorial/stdlib2.rst:356 msgid "Decimal Floating Point Arithmetic" msgstr "十進制 (Decimal) 浮點數運算" #: ../../tutorial/stdlib2.rst:358 msgid "" "The :mod:`decimal` module offers a :class:`~decimal.Decimal` datatype for " "decimal floating point arithmetic. Compared to the built-in :class:`float` " "implementation of binary floating point, the class is especially helpful for" msgstr "" ":mod:`decimal` 模組提供了一個 :class:`~decimal.Decimal` 資料類型,用於十進制" "浮點數運算。相較於內建的二進制浮點數 :class:`float` 實作,該 class 特別適用於" "下列情境" #: ../../tutorial/stdlib2.rst:362 msgid "" "financial applications and other uses which require exact decimal " "representation," msgstr "金融應用程式及其他需要準確十進位制表示法的應用," #: ../../tutorial/stdlib2.rst:364 msgid "control over precision," msgstr "對於精確度 (precision) 的控制," #: ../../tutorial/stdlib2.rst:365 msgid "control over rounding to meet legal or regulatory requirements," msgstr "控制四捨五入,以滿足法律或監管規範," #: ../../tutorial/stdlib2.rst:366 msgid "tracking of significant decimal places, or" msgstr "追蹤有效的小數位數 (decimal place),或" #: ../../tutorial/stdlib2.rst:367 msgid "" "applications where the user expects the results to match calculations done " "by hand." msgstr "使用者會期望計算結果與手工計算相符的應用程式。" #: ../../tutorial/stdlib2.rst:370 msgid "" "For example, calculating a 5% tax on a 70 cent phone charge gives different " "results in decimal floating point and binary floating point. The difference " "becomes significant if the results are rounded to the nearest cent::" msgstr "" "例如,要計算 70 美分的手機充電加上 5% 稅金的總價,使用十進制浮點數和二進制浮" "點數,會算出不同的答案。如果把計算結果四捨五入到最接近的美分,兩者的差異會更" "顯著:\n" "\n" "::" #: ../../tutorial/stdlib2.rst:380 msgid "" "The :class:`~decimal.Decimal` result keeps a trailing zero, automatically " "inferring four place significance from multiplicands with two place " "significance. Decimal reproduces mathematics as done by hand and avoids " "issues that can arise when binary floating point cannot exactly represent " "decimal quantities." msgstr "" ":class:`~decimal.Decimal` 的運算結果會保留尾部的零,也會根據有兩個有效位數的" "被乘數自動推斷出有四個有效位數的乘積。Decimal 可以重現手工計算的結果,以避免" "產生二進制浮點數無法準確表示十進制數值時會導致的問題。" #: ../../tutorial/stdlib2.rst:386 msgid "" "Exact representation enables the :class:`~decimal.Decimal` class to perform " "modulo calculations and equality tests that are unsuitable for binary " "floating point::" msgstr "" "準確的表示法使得 :class:`~decimal.Decimal` class 能夠執行對於二進制浮點數不適" "用的模數計算和相等性檢測:\n" "\n" "::" #: ../../tutorial/stdlib2.rst:400 msgid "" "The :mod:`decimal` module provides arithmetic with as much precision as " "needed::" msgstr "" ":mod:`decimal` 模組可提供運算中需要的足夠精確度:\n" "\n" "::"