mirror of
https://github.com/satwikkansal/wtfpython
synced 2024-11-22 02:54:25 +01:00
Translate Yielding None example
This commit is contained in:
parent
972d1334fb
commit
ecaab6dca1
33
translations/README-ru.md
vendored
33
translations/README-ru.md
vendored
@ -1511,3 +1511,36 @@ True
|
||||
* Оператор += изменяет объект на месте, не создавая новый объект. Таким образом, изменение атрибута одного экземпляра влияет на другие экземпляры и атрибут класса также.
|
||||
|
||||
---
|
||||
|
||||
|
||||
### ▶ Возврат None из генератора
|
||||
<!-- Example ID: 5a40c241-2c30-40d0-8ba9-cf7e097b3b53 --->
|
||||
```py
|
||||
some_iterable = ('a', 'b')
|
||||
|
||||
def some_func(val):
|
||||
return "something"
|
||||
```
|
||||
|
||||
**Результат (<= 3.7.x):**
|
||||
|
||||
```py
|
||||
>>> [x for x in some_iterable]
|
||||
['a', 'b']
|
||||
>>> [(yield x) for x in some_iterable]
|
||||
<generator object <listcomp> at 0x7f70b0a4ad58>
|
||||
>>> list([(yield x) for x in some_iterable])
|
||||
['a', 'b']
|
||||
>>> list((yield x) for x in some_iterable)
|
||||
['a', None, 'b', None]
|
||||
>>> list(some_func((yield x)) for x in some_iterable)
|
||||
['a', 'something', 'b', 'something']
|
||||
```
|
||||
|
||||
#### 💡 Объяснение:
|
||||
- Это баг в обработке yield в генераторах и списочных выражениях CPython.
|
||||
- Исходный код и объяснение можно найти [здесь](https://stackoverflow.com/questions/32139885/yield-in-list-comprehensions-and-generator-expressions)
|
||||
- Связанный [отчет об ошибке](https://bugs.python.org/issue10544)
|
||||
- В Python 3.8+ yield внутри списочных выражений больше не допускается и выдает `SyntaxError`.
|
||||
|
||||
---
|
||||
|
Loading…
Reference in New Issue
Block a user