为什么在'spam'中列表(print(x.upper(),end =''))得到一个[None,None,None,None]列表?

问题描述:

在“学习Python的第五届”608页,有一个例子代码:为什么在'spam'中列表(print(x.upper(),end =''))得到一个[None,None,None,None]列表?

>>> list(print(x.upper(), end=' ') for x in 'spam') 
S P A M [None, None, None, None] 

这样,为什么[无,无,无,无]在最后弹出?

print函数返回None ...因此,您的表达构造了一个列表[None, None, None, None]。由于您在python Read Evaluate Print Loop(REPL)中,表达式的结果会在评估后打印出来...

因此,评估表达式具有打印S P A M的副作用,然后表达式被评估,它的值被打印([None, None, None, None])。