You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中print调用列表处理自定义函数为何输出None?

问题原因

核心原因有两点:

  • 你定义的rev_sort函数没有写return返回语句。Python中所有没有显式声明返回值的函数,默认返回值都是None。
  • 你在函数内部调用的thelist.sort()和thelist.reverse()都是列表的原地操作方法:它们只会直接修改原列表本身的内容,不会返回修改后的新列表,这两个方法的执行返回值同样是None。

你之前先单独调用rev_sort(thelist)、再打印thelist能得到正确结果,本质是打印了被函数原地修改过的原列表对象;而写print(rev_sort(thelist))时,print接收的参数是函数的返回值,也就是默认的None,自然输出就是None。

修正方案

你可以二选一调整代码:

  • 保持函数原地修改的逻辑,分开调用函数和打印列表:
def rev_sort(thelist):
    '''
    Reverses and then sorts the list entered
    '''
    thelist.sort()
    thelist.reverse()

def main():
    thelist = ["fun", "is", "programming"]
    rev_sort(thelist)
    print(thelist)
    
main()
  • 给函数增加返回值,将处理后的列表返回,就可以直接在print语句中调用函数:
def rev_sort(thelist):
    '''
    Reverses and then sorts the list entered
    '''
    thelist.sort()
    thelist.reverse()
    return thelist

def main():
    thelist = ["fun", "is", "programming"]
    print(rev_sort(thelist))
    
main()

补充注意:不要和内置方法sorted()、reversed()混淆,这两个方法不会修改原对象,会返回处理后生成的新对象,和列表自带的sort()、reverse()原地操作逻辑完全不同。

内容的提问来源于stack exchange,提问作者Geeniee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 05:48:41