yield and comprehensions
Accidentally, yield can be used in generator expressions and comprehensions:
[(yield i) for i in 'ab']
# <generator object <listcomp> at 0x7f2ba1431f48>
list([(yield i) for i in 'ab'])
# ['a', 'b']
list((yield i) for i in 'ab')
# ['a', None, 'b', None]
This is because yield can be used in any function (turning it into a generator) and comprehensions are compiled into functions:
>>> dis.dis("[(yield i) for i in range(3)]")
0 LOAD_CONST 0 (<code object <listcomp> ...>)
2 LOAD_CONST 1 ('<listcomp>')
4 MAKE_FUNCTION 0
...
This produces a warning in Python 3.7 and will raise SyntaxError in python 3.8+. However, yield inside lambda still can be used:
a = lambda x: (yield x)
list(a(1))
# [1]