66# Liang-Bo Wang <me@liang2.tw>, 2015
77# Liang-Bo Wang <me@liang2.tw>, 2016
88# hsiao yi <hsiaoyi0504@gmail.com>, 2015
9- # Steven Hsu <hsuhaochun@gmail.com>, 2021
9+ # Steven Hsu <hsuhaochun@gmail.com>, 2021-2022
1010msgid ""
1111msgstr ""
1212"Project-Id-Version :Python 3.10\n "
1313"Report-Msgid-Bugs-To :\n "
1414"POT-Creation-Date :2022-06-22 00:18+0000\n "
15- "PO-Revision-Date :2021-06-01 22:43 +0800\n "
16- "Last-Translator :Adrian Liaw <adrianliaw2000 @gmail.com>\n "
15+ "PO-Revision-Date :2022-07-24 14:52 +0800\n "
16+ "Last-Translator :Steven Hsu <hsuhaochun @gmail.com>\n "
1717"Language-Team :Chinese - TAIWAN (https://github.com/python/python-docs-zh- "
1818"tw)\n "
1919"Language :zh_TW\n "
2020"MIME-Version :1.0\n "
2121"Content-Type :text/plain; charset=UTF-8\n "
2222"Content-Transfer-Encoding :8bit\n "
2323"Plural-Forms :nplurals=1; plural=0;\n "
24- "X-Generator :Poedit2.4.3 \n "
24+ "X-Generator :Poedit3.1.1 \n "
2525
2626#: ../../tutorial/controlflow.rst:5
2727msgid "More Control Flow Tools"
@@ -67,6 +67,8 @@ msgid ""
6767"specific types or attributes, you may also find the :keyword:`!match` "
6868"statement useful. For more details see :ref:`tut-match`."
6969msgstr ""
70+ "如果你要將同一個值與多個常數進行比較,或者檢查特定的型別或屬性,你可能會發"
71+ "現 :keyword:`!match` 陳述式也很有用。更多的細節,請參閱 :ref:`tut-match`。"
7072
7173#: ../../tutorial/controlflow.rst:46
7274msgid ":keyword:`!for` Statements"
@@ -295,28 +297,45 @@ msgid ""
295297"also extract components (sequence elements or object attributes) from the "
296298"value into variables."
297299msgstr ""
300+ ":keyword:`match` 陳述式會拿取一個運算式,並將其值與多個連續的模式 (pattern) "
301+ "進行比較,這些模式是以一個或多個 case 區塊來表示。表面上,這類似 C、Java 或 "
302+ "JavaScript(以及許多其他語言)中的 switch 陳述式,但它與 Rust 或 Haskell 等語"
303+ "言中的模式匹配 (pattern matching) 更為相近。只有第一個匹配成功的模式會被執"
304+ "行,而它也可以將成分(序列元素或物件屬性)從值中提取到變數中。"
298305
299306#: ../../tutorial/controlflow.rst:261
300307msgid ""
301308"The simplest form compares a subject value against one or more literals::"
302309msgstr ""
310+ "最簡單的形式,是將一個主題值 (subject value) 與一個或多個字面值 (literal) 進"
311+ "行比較:\n"
312+ "\n"
313+ "::"
303314
304315#: ../../tutorial/controlflow.rst:274
305316msgid ""
306317"Note the last block: the\" variable name\" ``_`` acts as a *wildcard* and "
307318"never fails to match. If no case matches, none of the branches is executed."
308319msgstr ""
320+ "請注意最後一段:「變數名稱」\\ ``_`` 是作為\\ *通用字元 (wildcard)*\\ 的角"
321+ "色,且永遠不會匹配失敗。如果沒有 case 匹配成功,則不會執行任何的分支。"
309322
310323#: ../../tutorial/controlflow.rst:277
311324msgid ""
312325"You can combine several literals in a single pattern using ``|`` (\" or\" )::"
313326msgstr ""
327+ "你可以使用 ``|``\\ (「或」)來將多個字面值組合在單一模式中:\n"
328+ "\n"
329+ "::"
314330
315331#: ../../tutorial/controlflow.rst:282
316332msgid ""
317333"Patterns can look like unpacking assignments, and can be used to bind "
318334"variables::"
319335msgstr ""
336+ "模式可以看起來像是拆解賦值 (unpacking assignment),且可以用來連結變數:\n"
337+ "\n"
338+ "::"
320339
321340#: ../../tutorial/controlflow.rst:298
322341msgid ""
@@ -327,13 +346,21 @@ msgid ""
327346"which makes it conceptually similar to the unpacking assignment ``(x, y) = "
328347"point``."
329348msgstr ""
349+ "請仔細研究那個例子!第一個模式有兩個字面值,可以想作是之前所述的字面值模式的"
350+ "延伸。但是接下來的兩個模式結合了一個字面值和一個變數,且該變數\\ *繫結 "
351+ "(bind)*\\ 了來自主題 (``point``) 的一個值。第四個模式會擷取兩個值,這使得它在"
352+ "概念上類似於拆解賦值 ``(x, y) = point``。"
330353
331354#: ../../tutorial/controlflow.rst:305
332355msgid ""
333356"If you are using classes to structure your data you can use the class name "
334357"followed by an argument list resembling a constructor, but with the ability "
335358"to capture attributes into variables::"
336359msgstr ""
360+ "如果你要用 class 來結構化你的資料,你可以使用該 class 的名稱加上一個引數列"
361+ "表,類似一個建構式 (constructor),但它能夠將屬性擷取到變數中:\n"
362+ "\n"
363+ "::"
337364
338365#: ../../tutorial/controlflow.rst:326
339366msgid ""
@@ -344,6 +371,12 @@ msgid ""
344371"\" y\" ), the following patterns are all equivalent (and all bind the ``y`` "
345372"attribute to the ``var`` variable)::"
346373msgstr ""
374+ "你可以將位置參數 (positional parameter) 與一些能夠排序其屬性的內建 class(例"
375+ "如 dataclasses)一起使用。你也可以透過在 class 中設定特殊屬性 "
376+ "``__match_args__``,來定義模式中屬性們的特定位置。如果它被設定為 (\" x\" ,\" y"
377+ "\" ),則以下的模式都是等價的(且都會將屬性 ``y`` 連結到變數 ``var``):\n"
378+ "\n"
379+ "::"
347380
348381#: ../../tutorial/controlflow.rst:337
349382msgid ""
@@ -355,30 +388,46 @@ msgid ""
355388"(recognized by the\" (...)\" next to them like ``Point`` above) are never "
356389"assigned to."
357390msgstr ""
391+ "理解模式的一種推薦方法,是將它們看作是你會放在賦值 (assignment) 左側內容的一"
392+ "種延伸形式,這樣就可以了解哪些變數會被設為何值。只有獨立的名稱(像是上面的 "
393+ "``var``)能被 match 陳述式賦值。點分隔名稱(如 ``foo.bar``)、屬性名稱(上面"
394+ "的 ``x=`` 及 ``y=``)或 class 名稱(由它們後面的\" (...)\" 被辨識,如上面的 "
395+ "``Point``)則永遠無法被賦值。"
358396
359397#: ../../tutorial/controlflow.rst:344
360398msgid ""
361399"Patterns can be arbitrarily nested. For example, if we have a short list of "
362400"points, we could match it like this::"
363401msgstr ""
402+ "模式可以任意地被巢套 (nested)。例如,如果我們有一個由某些點所組成的簡短 "
403+ "list,我們就可以像這樣來對它進行匹配:\n"
404+ "\n"
405+ "::"
364406
365407#: ../../tutorial/controlflow.rst:359
366408msgid ""
367409"We can add an ``if`` clause to a pattern, known as a\" guard\" . If the "
368410"guard is false, ``match`` goes on to try the next case block. Note that "
369411"value capture happens before the guard is evaluated::"
370412msgstr ""
413+ "我們可以在模式中加入一個 ``if`` 子句,稱為「防護 (guard)」。如果該防護為假,"
414+ "則 ``match`` 會繼續嘗試下一個 case 區塊。請注意,值的擷取會發生在防護的評估之"
415+ "前:\n"
416+ "\n"
417+ "::"
371418
372419#: ../../tutorial/controlflow.rst:369
373420msgid "Several other key features of this statement:"
374- msgstr ""
421+ msgstr "此種陳述式的其他幾個重要特色: "
375422
376423#: ../../tutorial/controlflow.rst:371
377424msgid ""
378425"Like unpacking assignments, tuple and list patterns have exactly the same "
379426"meaning and actually match arbitrary sequences. An important exception is "
380427"that they don't match iterators or strings."
381428msgstr ""
429+ "與拆解賦值的情況類似,tuple(元組)和 list 模式具有完全相同的意義,而且實際上"
430+ "可以匹配任意的序列。一個重要的例外,是它們不能匹配疊代器 (iterator) 或字串。"
382431
383432#: ../../tutorial/controlflow.rst:375
384433msgid ""
@@ -387,6 +436,10 @@ msgid ""
387436"also be ``_``, so ``(x, y, *_)`` matches a sequence of at least two items "
388437"without binding the remaining items."
389438msgstr ""
439+ "序列模式 (sequence pattern) 可支援擴充拆解 (extended unpacking):\\ ``[x, y, "
440+ "*rest]`` 與 ``(x, y, *rest)`` 的作用類似於拆解賦值。\\ ``*`` 後面的名稱也可以"
441+ "是 ``_``,所以 ``(x, y, *_)`` 會匹配一個至少兩項的序列,且不會連結那兩項以外"
442+ "的其餘項。"
390443
391444#: ../../tutorial/controlflow.rst:380
392445msgid ""
@@ -395,34 +448,50 @@ msgid ""
395448"sequence patterns, extra keys are ignored. An unpacking like ``**rest`` is "
396449"also supported. (But ``**_`` would be redundant, so it is not allowed.)"
397450msgstr ""
451+ "映射模式 (mapping pattern):\\ ``{\" bandwidth\" : b,\" latency\" : l}`` 能從一"
452+ "個 dictionary(字典)中擷取 ``\" bandwidth\" `` 及 ``\" latency\" `` 的值。與序列"
453+ "模式不同,額外的鍵 (key) 會被忽略。一種像是 ``**rest`` 的拆解方式,也是可被支"
454+ "援的。(但 ``**_`` 則是多餘的做法,所以它並不被允許。)"
398455
399456#: ../../tutorial/controlflow.rst:385
400457msgid "Subpatterns may be captured using the ``as`` keyword::"
401458msgstr ""
459+ "使用關鍵字 ``as`` 可以擷取子模式 (subpattern):\n"
460+ "\n"
461+ "::"
402462
403463#: ../../tutorial/controlflow.rst:389
404464msgid ""
405465"will capture the second element of the input as ``p2`` (as long as the input "
406466"is a sequence of two points)"
407467msgstr ""
468+ "將會擷取輸入的第二個元素作為 ``p2``\\ (只要該輸入是一個由兩個點所組成的序"
469+ "列)。"
408470
409471#: ../../tutorial/controlflow.rst:392
410472msgid ""
411473"Most literals are compared by equality, however the singletons ``True``, "
412474"``False`` and ``None`` are compared by identity."
413475msgstr ""
476+ "大部分的字面值是藉由相等性 (equality) 來比較,但是單例物件 (singleton) "
477+ "``True``\\ 、\\ ``False`` 和 ``None`` 是藉由標識值 (identity) 來比較。"
414478
415479#: ../../tutorial/controlflow.rst:395
416480msgid ""
417481"Patterns may use named constants. These must be dotted names to prevent "
418482"them from being interpreted as capture variable::"
419483msgstr ""
484+ "模式可以使用附名常數 (named constant)。這些模式必須是點分隔名稱,以免它們被解"
485+ "釋為擷取變數:\n"
486+ "\n"
487+ "::"
420488
421489#: ../../tutorial/controlflow.rst:414
422490msgid ""
423491"For a more detailed explanation and additional examples, you can look into :"
424492"pep:`636` which is written in a tutorial format."
425493msgstr ""
494+ "關於更詳細的解釋和其他範例,你可以閱讀 :pep:`636`,它是以教學的格式編寫而成。"
426495
427496#: ../../tutorial/controlflow.rst:420
428497msgid "Defining Functions"
@@ -1275,23 +1344,3 @@ msgstr ""
12751344"實際上,\\ *傳址呼叫 (call by object reference)* 的說法可能較為貼切。因為,若"
12761345"傳遞的是一個可變物件時,呼叫者將看得見被呼叫者對物件做出的任何改變(例如被插"
12771346"入 list 內的新項目)。"
1278-
1279- #~ msgid ""
1280- #~ "If you need to modify the sequence you are iterating over while inside "
1281- #~ "the loop (for example to duplicate selected items), it is recommended "
1282- #~ "that you first make a copy. Iterating over a sequence does not "
1283- #~ "implicitly make a copy. The slice notation makes this especially "
1284- #~ "convenient::"
1285- #~ msgstr ""
1286- #~ "如果你在迴圈中需要修改一個你正在疊代的序列(例如重複一些選擇的元素),那麼"
1287- #~ "會建議你先建立一個序列的拷貝。疊代序列並不暗示建立新的拷貝。此時 slice 語"
1288- #~ "法就讓這件事十分容易完成:\n"
1289- #~ "\n"
1290- #~ "::"
1291-
1292- #~ msgid ""
1293- #~ "With ``for w in words:``, the example would attempt to create an infinite "
1294- #~ "list, inserting ``defenestrate`` over and over again."
1295- #~ msgstr ""
1296- #~ "在 ``for w in words:`` 的情況,這個例子會試著重覆不斷地插入 "
1297- #~ "``defenestrate``,產生一個無限長的 list。"