了解python3列表为每个元素打印无值

Understanding Python 3 lists printing None value for each element

作为一个在Python中非常熟悉的人,我在版本3中打印了列表的所有元素,经过全面的研究,我找不到这种行为的解释。

但是,我知道每个函数都必须返回一些值,如果没有定义,函数将返回"null"(在python中为"none")。但在这种情况下,为什么在正确打印所有元素之后,它会为另一个列表中的每个元素打印"无"?

1
2
3
4
5
6
7
>>> a_list = [1,2]
>>> a_list
[1, 2]
>>> [print(f) for f in a_list]
1
2
[None, None]


Noneprint函数的返回值。

当你指的是for f in a_list: print(f)时,不要使用[print(f) for f in a_list]


正如其他人提到的,print()不返回任何内容。因此,不打印任何内容。如果您想知道为什么元素被正确打印,然后是2个None,那是因为函数是如何工作的。

一个函数被调用,一旦里面的每一个语句都被执行,一个值就会被返回,但只有当函数返回某个值时。

在您的例子中,print(f)是对f的print函数的调用,print被执行,这意味着它将所需的值打印到控制台,然后返回其值,这是无的,因为print()不返回任何内容。在shell中工作时,每个表达式都是直接打印的,因此,可以同时获得预期的元素和None

对于解决方案,您可以使用其他答案中提到的简单循环。

输出:

1
2
1
2