@@ -412,21 +412,24 @@ msgid ""
412412"detected; the last datum (textually rightmost in the display) stored for a "
413413"given key value prevails."
414414msgstr ""
415+ "对键取值类型的限制已列在之前的 :ref:`types` 一节中。 (总的说来,键的类型应该为 "
416+ ":term:`hashable`,这就把所有可变对象都排除在外。) 重复键之间的冲突不会被检测;指定键所保存的最后一个数据 (即在显示中排最右边的文本)"
417+ " 为最终有效数据。"
415418
416419#: ../../reference/expressions.rst:345
417420msgid "Generator expressions"
418- msgstr ""
421+ msgstr "生成器表达式 "
419422
420423#: ../../reference/expressions.rst:352
421424msgid "A generator expression is a compact generator notation in parentheses:"
422- msgstr ""
425+ msgstr "生成器表达式是用圆括号括起来的紧凑形式生成器标注。 "
423426
424427#: ../../reference/expressions.rst:357
425428msgid ""
426429"A generator expression yields a new generator object. Its syntax is the "
427430"same as for comprehensions, except that it is enclosed in parentheses "
428431"instead of brackets or curly braces."
429- msgstr ""
432+ msgstr "生成器表达式会产生一个新的生成器对象。 其句法与推导式相同,区别在于它是用圆括号而不是用方括号或花括号括起来的。 "
430433
431434#: ../../reference/expressions.rst:361
432435msgid ""
@@ -441,12 +444,18 @@ msgid ""
441444"scope as they may depend on the values obtained from the leftmost iterable. "
442445"For example: ``(x*y for x in range(10) for y in range(x, x+10))``."
443446msgstr ""
447+ "在生成器表达式中使用的变量会在为生成器对象调用 :meth:`~generator.__next__` "
448+ "方法的时候以惰性方式被求值(即与普通生成器相同的方式)。 但是,最左侧 :keyword:`!for` "
449+ "子句内的可迭代对象是会被立即求值的,因此它所造成的错误会在生成器表达式被定义时被检测到,而不是在获取第一个值时才出错。 后续的 "
450+ ":keyword:`!for` 子句以及最左侧 :keyword:`!for` "
451+ "子句内的任何筛选条件无法在外层作用域内被求值,因为它们可能会依赖于从最左侧可迭代对象获取的值。 例如: ``(x*y for x in "
452+ "range(10) for y in range(x, x+10))``."
444453
445454#: ../../reference/expressions.rst:372
446455msgid ""
447456"The parentheses can be omitted on calls with only one argument. See section"
448457" :ref:`calls` for details."
449- msgstr ""
458+ msgstr "圆括号在只附带一个参数的调用中可以被省略。 详情参见 :ref:`calls` 一节。 "
450459
451460#: ../../reference/expressions.rst:375
452461msgid ""
@@ -456,6 +465,9 @@ msgid ""
456465":exc:`DeprecationWarning` when compiled, in Python 3.8+ they will emit "
457466":exc:`SyntaxError`)."
458467msgstr ""
468+ "为避免干扰到生成器表达式本身预期的操作,``yield`` 和 ``yield from`` 表达式禁止在隐式定义的生成器中使用 (在 Python "
469+ "3.7 中,这种表达式会在编译时引发 :exc:`DeprecationWarning`,在 Python 3.8+ 中它们将引发 "
470+ ":exc:`SyntaxError`)。"
459471
460472#: ../../reference/expressions.rst:381
461473msgid ""
@@ -465,21 +477,26 @@ msgid ""
465477"asynchronous generator object, which is an asynchronous iterator (see :ref"
466478":`async-iterators`)."
467479msgstr ""
480+ "如果生成器表达式包含 :keyword:`!async for` 子句或 :keyword:`await` 表达式,则称为 "
481+ ":dfn:`异步生成器表达式`。 异步生成器表达式会返回一个新的异步生成器对象,此对象属于异步迭代器 (参见 :ref:`async-"
482+ "iterators`)。"
468483
469484#: ../../reference/expressions.rst:387
470485msgid "Asynchronous generator expressions were introduced."
471- msgstr ""
486+ msgstr "引入了异步生成器表达式。 "
472487
473488#: ../../reference/expressions.rst:390
474489msgid ""
475490"Prior to Python 3.7, asynchronous generator expressions could only appear in"
476491" :keyword:`async def` coroutines. Starting with 3.7, any function can use "
477492"asynchronous generator expressions."
478493msgstr ""
494+ "在 Python 3.7 之前,异步生成器表达式只能在 :keyword:`async def` 协和中出现。 从 3.7 "
495+ "开始,任何函数都可以使用异步生成器表达式。"
479496
480497#: ../../reference/expressions.rst:402
481498msgid "Yield expressions"
482- msgstr "Yield 表达式"
499+ msgstr "yield 表达式"
483500
484501#: ../../reference/expressions.rst:414
485502msgid ""
@@ -490,8 +507,8 @@ msgid ""
490507":keyword:`async def` function's body causes that coroutine function to be an"
491508" asynchronous generator. For example::"
492509msgstr ""
493- "Yield 表达式在定义 :term:`generator` 函数或是 :term:`asynchronous generator` "
494- "的时候才会用到。 因此只能在函数定义的内部使用yield表达式。在一个函数体内使用 yield 表达式会使这个函数变成一个生成器,并且在一个 "
510+ "yield 表达式在定义 :term:`generator` 函数或是 :term:`asynchronous generator` 的时候才会用到。 "
511+ "因此只能在函数定义的内部使用yield表达式。 在一个函数体内使用 yield 表达式会使这个函数变成一个生成器,并且在一个 "
495512":keyword:`async def` 定义的函数体内使用 yield 表达式会让协程函数变成异步的生成器。 比如说::"
496513
497514#: ../../reference/expressions.rst:427
0 commit comments