5

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

但是,我知道每个函数都必须返回一些值,并且当它未定义时,函数返回“Null”(或 Python 中的“None”)。但是为什么在这种情况下,在正确打印所有元素后,它会为另一个列表中的每个元素打印“无”?

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

2 回答 2

4

Noneprint函数的返回值。

[print(f) for f in a_list]当你的意思是不要使用for f in a_list: print(f)

于 2013-07-17T18:07:05.223 回答
1

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

一个函数被调用,一旦内部的每个语句都被执行,就会返回一个值,但前提是该函数返回了一些东西。

在您的情况下, print(f) 是对 f 上的 print 函数的调用, print 已执行,这意味着它将所需的值打印到控制台,然后返回其值,即 None,因为 print() 执行 n不返回任何东西。当您在 shell 中工作时,每个表达式都会直接打印,因此,您会得到预期的元素以及None's.

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

输出:

1
2
于 2019-02-06T09:17:30.183 回答