为什么在'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]
)。