疯狂的Python-18(None的产生)

疯狂的Python-18(None的产生)_第1张图片

一些有趣的鲜为人知的Python特性集合

无论你是Python新手还是Python老手,我相信,这个系列的文章都会让你获益良多!

阅读此系列任何文章前请务必观看:疯狂的Python-目录大纲


▶ None的产生

some_iterable = ('a', 'b')

def some_func(val):
    return "something"

Output:

>>> [x for x in some_iterable]
['a', 'b']
>>> [(yield x) for x in some_iterable]
 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']

:bulb: 解释:

  • 这是一个CPython中yield关键字在列表构造和生成器表达式中使用的bug。已经在Python3.8中修复了。在Python3.7中也会警告过时。具体可以看Python的这篇bug report

你可能感兴趣的:(疯狂的Python-18(None的产生))