XiaoShengbb 发表于 2022-11-7 22:31:50

请问print(a.reverse())为啥输出'None'?

member=
member.extend()
print(member,member.count(123),member.index(345))
sa=member[:]
print(sa.reverse())
print(list.reverse(sa))
ass=sa.reverse()
print(ass)
asss=list.reverse(sa)
print(asss)



以下为输出结果:
1 2
None
None
None
None

jackz007 发表于 2022-11-7 22:40:11

本帖最后由 jackz007 于 2022-11-7 22:44 编辑

      因为列表属于可修改对象,所以,列表的方法一般都没有返回值,无返回值的函数的返回值就是 None,修改列表和打印列表必须分两句来写。
print(sa.reverse())
      必须分解为
sa.reverse()
print(sa)

wp231957 发表于 2022-11-8 06:56:12

因为它本来就返回none

tommyyu 发表于 2022-11-8 07:10:56

本帖最后由 tommyyu 于 2022-11-8 17:58 编辑

>>> a =
>>> a.reverse()
>>> a

>>> print(a.reverse())
None
>>>
在上面的一段代码中,我们在输入 a.reverse() 这一行代码后并没有在交互中看到任何东西,这说明这个函数的返回值为 None。 reverse 函数是对这个列表进行原地操作,并不会返回任何值,只会改变 a 的值。>>> None
>>> print(None)
None
>>>
事实上,即使我们直接输入 None , python 也不会打印任何东西,只有在 print(None) 的时候, Python 才会打印 None。

zhangjinxuan 发表于 2022-11-8 07:25:55

reverse没有返回值,你可以试试
reversed(sa)
这样做应该就能返回反转后的列表了

Twilight6 发表于 2022-11-8 11:07:56



Python 中,只要函数没有设置 return 返回值,那么 Python 就默认返回一个 None

所以当你打印一个函数返回 None 时,就需要考虑这是这个函数的特殊情况,还是本身就没有设置返回值?

Python 中的很多列表方法都没有返回值,所以返回的就是None

例如:append、reverse、insert、remove、extend 等都没有返回值,因为被改变的是调用对象本身,也就是列表本身

当然也有有返回值的,例如:.pop(),它返回的也不是列表,而是列表此次被弹出的元素

XiaoShengbb 发表于 2022-11-8 17:45:55

感谢各位!{:10_257:}
页: [1]
查看完整版本: 请问print(a.reverse())为啥输出'None'?