Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update library/typing #691

Merged
merged 6 commits into from
Nov 6, 2023
Merged
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
84 changes: 73 additions & 11 deletions library/typing.po
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: Python 3.12\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-11 17:13+0000\n"
"PO-Revision-Date: 2023-09-05 14:49+0800\n"
"PO-Revision-Date: 2023-11-01 14:02+0800\n"
"Last-Translator: RockLeon <[email protected]>\n"
"Language-Team: Chinese - TAIWAN (https://github.com/python/python-docs-zh-"
"tw)\n"
Expand All @@ -17,7 +17,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Poedit 3.3.1\n"
"X-Generator: Poedit 3.4\n"

#: ../../library/typing.rst:3
msgid ":mod:`typing` --- Support for type hints"
Expand Down Expand Up @@ -357,13 +357,15 @@ msgstr "NewType"

#: ../../library/typing.rst:179
msgid "Use the :class:`NewType` helper to create distinct types::"
msgstr ""
msgstr "使用 :class:`NewType` 工具 (helper) 建立獨特型別: ::"
mattwang44 marked this conversation as resolved.
Show resolved Hide resolved

#: ../../library/typing.rst:186
msgid ""
"The static type checker will treat the new type as if it were a subclass of "
"the original type. This is useful in helping catch logical errors::"
msgstr ""
"若它是原本型別的子類別,靜態型別檢查器會將其視為一個新的型別。這對於幫助擷取"
"邏輯性錯誤非常有用: ::"

#: ../../library/typing.rst:198
msgid ""
Expand All @@ -372,6 +374,9 @@ msgid ""
"pass in a ``UserId`` wherever an ``int`` might be expected, but will prevent "
"you from accidentally creating a ``UserId`` in an invalid way::"
msgstr ""
"你依然可以在型別 `UserId`` 的變數中,執行所有 ``int`` 的操作。這讓你可以在預"
mattwang44 marked this conversation as resolved.
Show resolved Hide resolved
"期是 ``int`` 的情況之下傳遞一個 ``UserId``,這會預防你意外使用無效的方法建立"
mattwang44 marked this conversation as resolved.
Show resolved Hide resolved
"一個 ``UserId``: ::"

#: ../../library/typing.rst:206
msgid ""
Expand All @@ -381,26 +386,33 @@ msgid ""
"it. That means the expression ``Derived(some_value)`` does not create a new "
"class or introduce much overhead beyond that of a regular function call."
msgstr ""
"注意這只會透過靜態型別檢查器強制檢查。在執行環境 (runtime) 中,敘述句 "
mattwang44 marked this conversation as resolved.
Show resolved Hide resolved
"(statement) ``Derived = NewType('Derived', Base)`` 會使 ``Derived`` 成為一個 "
"callable(可呼叫物件),會立即回傳任何你傳遞的引數。這意味著 expression (運"
"算式)``Derived(some_value)`` 不會建立一個新的類別或過度引入原有的涵式呼叫。"
mattwang44 marked this conversation as resolved.
Show resolved Hide resolved

#: ../../library/typing.rst:212
msgid ""
"More precisely, the expression ``some_value is Derived(some_value)`` is "
"always true at runtime."
msgstr ""
"更精確地說,expression ``some_value is Derived(some_value)`` 在執行環境時永遠"
"為 true。"

#: ../../library/typing.rst:215
msgid "It is invalid to create a subtype of ``Derived``::"
msgstr ""
msgstr "這會無法建立一個 ``Derived`` 的子型別: ::"

#: ../../library/typing.rst:224
msgid ""
"However, it is possible to create a :class:`NewType` based on a 'derived' "
"``NewType``::"
msgstr ""
"無論如何,這有辦法基於 'derived' ``NewType`` 建立一個 :class:`NewType`: ::"
mattwang44 marked this conversation as resolved.
Show resolved Hide resolved

#: ../../library/typing.rst:232
msgid "and typechecking for ``ProUserId`` will work as expected."
msgstr ""
msgstr "以及針對 ``ProUserId`` 的型別檢查會如期運作。"

#: ../../library/typing.rst:234
msgid "See :pep:`484` for more details."
Expand All @@ -413,6 +425,9 @@ msgid ""
"checker treat ``Alias`` as being *exactly equivalent* to ``Original`` in all "
"cases. This is useful when you want to simplify complex type signatures."
msgstr ""
"請記得使用型別別名是宣告兩種型別是互相\\ *相等*\\ 的。使用 ``type Alias = "
"Original`` 則會讓靜態型別檢查器在任何情況之下將 ``Alias`` 視為與 "
"``Original`` \\ *完全相等*\\ 。這當你想把複雜的型別簽名進行簡化時,非常好用。"

#: ../../library/typing.rst:243
msgid ""
Expand All @@ -423,23 +438,30 @@ msgid ""
"``Derived`` is expected. This is useful when you want to prevent logic "
"errors with minimal runtime cost."
msgstr ""
"相反的,``NewType`` 宣告一個型別會是另外一種型別的子類別。使用 ``Derived = "
"NewType('Derived', Original)`` 會使靜態型別檢查器將 ``Derived`` 視為 "
"``Original`` 的子類別,也意味著一個型別為 ``Original`` 的值,不能被使用在任何"
"預期接收到型別 ``Derived`` 的值的區域。這當你想用最小的執行環境成本 (runtime "
"cost) 預防邏輯性錯誤而言,非常有用。"

#: ../../library/typing.rst:252
msgid ""
"``NewType`` is now a class rather than a function. As a result, there is "
"some additional runtime cost when calling ``NewType`` over a regular "
"function."
msgstr ""
"現在的 ``NewType`` 比起一個函式更像一個類別。因此,比起一般的函式,呼叫 "
"``NewType`` 需要額外的執行環境成本。"

#: ../../library/typing.rst:257
msgid ""
"The performance of calling ``NewType`` has been restored to its level in "
"Python 3.9."
msgstr ""
msgstr "呼叫 ``NewType`` 的效能已經恢復與 Python 3.9 相同的水準。"

#: ../../library/typing.rst:264
msgid "Annotating callable objects"
msgstr ""
msgstr "標記 callable 物件"

#: ../../library/typing.rst:266
msgid ""
Expand All @@ -448,6 +470,9 @@ msgid ""
"``Callable[[int], str]`` signifies a function that takes a single parameter "
"of type :class:`int` and returns a :class:`str`."
msgstr ""
"函式,或者是 :term:`callable` 物件,可以使用 :class:`collections.abc."
mattwang44 marked this conversation as resolved.
Show resolved Hide resolved
"Callable` 或 :data:`typing.Callable` 進行標記。 ``Callable[[int], str]`` 象徵"
"為一個函式,可以接受一個型別為 :class:`int` 的引數,並回傳一個 :class:`str`。"

#: ../../library/typing.rst:271 ../../library/typing.rst:2888
#: ../../library/typing.rst:3030
Expand All @@ -461,12 +486,17 @@ msgid ""
"types, a :class:`ParamSpec`, :data:`Concatenate`, or an ellipsis. The return "
"type must be a single type."
msgstr ""
"使用訂閱語法 (subscription syntax) 時,必須使用到兩個值,分別為引述串列以及回"
mattwang44 marked this conversation as resolved.
Show resolved Hide resolved
"傳類別。引數串列必須為一個型別串列::class:`ParamSpec`、:data:`Concatenate` "
"或是一個刪節號 (ellipsis)。回傳類別必為一個單一類別。"

#: ../../library/typing.rst:294
msgid ""
"If a literal ellipsis ``...`` is given as the argument list, it indicates "
"that a callable with any arbitrary parameter list would be acceptable:"
msgstr ""
"若刪節號文字 ``...`` 被當作引數串列給定,其指出一個具任何、隨意參數列表的 "
mattwang44 marked this conversation as resolved.
Show resolved Hide resolved
"callable 會被接受: ::"

#: ../../library/typing.rst:306
msgid ""
Expand All @@ -476,6 +506,10 @@ msgid ""
"be expressed by defining a :class:`Protocol` class with a :meth:`~object."
"__call__` method:"
msgstr ""
"``Callable`` 不如有可變數量引數的函式、:func:`overloaded functions "
"<overload>`、或是限定關鍵字參數的函式,可以表示複雜簽名。然而,這些簽名可以透"
mattwang44 marked this conversation as resolved.
Show resolved Hide resolved
"過定義一個具有 :meth:`~object.__call__` 方法的 :class:`Protocol` 類別進行表"
"示:"

#: ../../library/typing.rst:333
msgid ""
Expand All @@ -487,53 +521,70 @@ msgid ""
"``Callable[Concatenate[Arg1Type, Arg2Type, ..., ParamSpecVariable], "
"ReturnType]`` respectively."
msgstr ""
"Callable 物件可以取用其他 callable 當作引數使用,可以透過 :class:`ParamSpec` "
"指出他們的參數型別是個別獨立的。另外,如果這個 callable 從其他 callable 新增"
"或刪除引數時,將會使用到 :data:`Concatenate` 運算子。他們可以分別採用 "
"``Callable[ParamSpecVariable, ReturnType]`` 以及 "
"``Callable[Concatenate[Arg1Type, Arg2Type, ..., ParamSpecVariable], "
"ReturnType]`` 的形式。"

#: ../../library/typing.rst:341 ../../library/typing.rst:3559
msgid ""
"``Callable`` now supports :class:`ParamSpec` and :data:`Concatenate`. See :"
"pep:`612` for more details."
msgstr ""
"``Callable`` 現已支援 :class:`ParamSpec` 以及 :data:`Concatenate`。請參閱 :"
"pep:`612` 閱讀詳細內容。"

#: ../../library/typing.rst:346
msgid ""
"The documentation for :class:`ParamSpec` and :class:`Concatenate` provides "
"examples of usage in ``Callable``."
msgstr ""
":class:`ParamSpec` 以及 :class:`Concatenate` 的文件中,提供範例如何在 "
"``Callable`` 中使用。"

#: ../../library/typing.rst:352
msgid "Generics"
msgstr ""
msgstr "泛型"

#: ../../library/typing.rst:354
msgid ""
"Since type information about objects kept in containers cannot be statically "
"inferred in a generic way, many container classes in the standard library "
"support subscription to denote the expected types of container elements."
msgstr ""
"自從關於物件的型別資訊留存在容器之內,且無法使用泛型的方式進行靜態推論 "
mattwang44 marked this conversation as resolved.
Show resolved Hide resolved
"(statically inferred),許多標準函式庫的容器類別支援訂閱及表示容器內元素預期的"
mattwang44 marked this conversation as resolved.
Show resolved Hide resolved
"型別。"

#: ../../library/typing.rst:371
msgid ""
"Generic functions and classes can be parameterized by using :ref:`type "
"parameter syntax <type-params>`::"
msgstr ""
"泛型函式及類別可以使用 :ref:`type parameter syntax <type-params>` 進行參數化 "
mattwang44 marked this conversation as resolved.
Show resolved Hide resolved
"(parameterize) : ::"

#: ../../library/typing.rst:379
msgid "Or by using the :class:`TypeVar` factory directly::"
msgstr ""
msgstr "或是直接使用 :class:`TypeVar` 工具 (factory): ::"
mattwang44 marked this conversation as resolved.
Show resolved Hide resolved

#: ../../library/typing.rst:389
msgid "Syntactic support for generics is new in Python 3.12."
msgstr ""
msgstr "在 Python 3.12 中,泛型的語法支援是全新功能。"

#: ../../library/typing.rst:395
msgid "Annotating tuples"
msgstr ""
msgstr "標記元組 (tuple)"
mattwang44 marked this conversation as resolved.
Show resolved Hide resolved

#: ../../library/typing.rst:397
msgid ""
"For most containers in Python, the typing system assumes that all elements "
"in the container will be of the same type. For example::"
msgstr ""
"在 Python 大多數的容器當中,加註型別系統認為容器內的所有元素會是相同型別。舉"
"例來說: ::"

#: ../../library/typing.rst:412
msgid ""
Expand All @@ -542,6 +593,10 @@ msgid ""
"Mapping` only accepts two type arguments: the first indicates the type of "
"the keys, and the second indicates the type of the values."
msgstr ""
":class:`list` 只接受一個型別引數,所以型別檢查器可能在上述 ``y`` 賦值 "
"(assignment)觸發錯誤。類似的範例,:class:`~collections.abc.Mapping` 只接受兩"
mattwang44 marked this conversation as resolved.
Show resolved Hide resolved
"個型別引數:第一個引數指出 keys (鍵) 的型別;第二個引數指出 values (值)的"
mattwang44 marked this conversation as resolved.
Show resolved Hide resolved
"型別。"

#: ../../library/typing.rst:418
msgid ""
Expand All @@ -550,6 +605,10 @@ msgid ""
"For this reason, tuples are special-cased in Python's typing system. :class:"
"`tuple` accepts *any number* of type arguments::"
msgstr ""
"然而,與其他多數的 Python 容器不同,在慣用的 (idiomatic) Python 程式碼中,元"
"組可以擁有不完全相同型別的元素是相當常見的。為此,元祖在 Python 的加註型別系"
mattwang44 marked this conversation as resolved.
Show resolved Hide resolved
"統中是個特例 (special-cased)。:class:`tuple` 接受\\ *任何數量*\\ 的型別引"
"數: ::"

#: ../../library/typing.rst:434
msgid ""
Expand All @@ -558,6 +617,9 @@ msgid ""
"use ``tuple[()]``. Using plain ``tuple`` as an annotation is equivalent to "
"using ``tuple[Any, ...]``::"
msgstr ""
"為了標示一個元組可以為\\ *任意*\\ 長度,且所有元素皆是相同型別 ``T``,請使用 "
"``tuple[T, ...]`` 進行標示。為了標示一個空元組,請使用 ``tuple[()]``。單純使"
"用 ``tuple`` 作為標記,會與使用 ``tuple[Any, ...]`` 是相等的: ::"

#: ../../library/typing.rst:457
msgid "The type of class objects"
Expand Down
Loading