作为 Python 中的一个非常菜鸟,我正在打印版本 3 中列表的所有元素,经过全面研究后,我找不到这种行为的解释。
但是,我知道每个函数都必须返回一些值,并且当它未定义时,函数返回“Null”(或 Python 中的“None”)。但是为什么在这种情况下,在正确打印所有元素后,它会为另一个列表中的每个元素打印“无”?
>>> a_list = [1,2]
>>> a_list
[1, 2]
>>> [print(f) for f in a_list]
1
2
[None, None]
作为 Python 中的一个非常菜鸟,我正在打印版本 3 中列表的所有元素,经过全面研究后,我找不到这种行为的解释。
但是,我知道每个函数都必须返回一些值,并且当它未定义时,函数返回“Null”(或 Python 中的“None”)。但是为什么在这种情况下,在正确打印所有元素后,它会为另一个列表中的每个元素打印“无”?
>>> a_list = [1,2]
>>> a_list
[1, 2]
>>> [print(f) for f in a_list]
1
2
[None, None]
None
是print
函数的返回值。
[print(f) for f in a_list]
当你的意思是不要使用for f in a_list: print(f)
。
正如其他人所提到的, print() 不返回任何内容。因此,没有打印。如果您想知道为什么元素被正确打印,然后是 2 None
,这是因为函数是如何工作的。
一个函数被调用,一旦内部的每个语句都被执行,就会返回一个值,但前提是该函数返回了一些东西。
在您的情况下, print(f) 是对 f 上的 print 函数的调用, print 已执行,这意味着它将所需的值打印到控制台,然后返回其值,即 None,因为 print() 执行 n不返回任何东西。当您在 shell 中工作时,每个表达式都会直接打印,因此,您会得到预期的元素以及None
's.
来到解决方案,您可以使用其他答案中提到的简单循环
输出:
1
2