Python中为什么输入结果是None?


Python中为什么输入结果是None?

7 回复

递归 2//2 等于 0


在Python里,函数或方法如果没有用 return 明确返回一个值,它默认就返回 None。你看到 None,八成是调用了这种函数,然后直接打印了它的结果。

最常见的情况是用了像 list.append(), list.sort(), print() 这类方法。它们的作用是修改列表或者输出内容,任务完成了就行,不需要返回新值,所以设计上就返回 None

看个典型例子:

my_list = [3, 1, 2]
result = my_list.sort()  # .sort() 方法原地排序,返回 None
print(result)  # 输出: None
print(my_list) # 输出: [1, 2, 3],列表本身已经被修改

# 另一个常见坑:链式调用
my_list = [3, 1, 2]
print(my_list.append(4).sort())  # 报错!因为 .append(4) 返回 None,对 None 调用 .sort() 就炸了

怎么避免?

  1. 分清“原地操作”和“返回新值”:像 list.sort() 是原地排序,而 sorted(list) 会返回一个新列表。
    my_list = [3, 1, 2]
    sorted_list = sorted(my_list)  # 返回新列表
    print(sorted_list)  # 输出: [1, 2, 3]
    
  2. 别把“过程”当“结果”:如果你需要函数的结果,确保函数最后有 return 语句。
  3. 调试时分开:先执行修改操作,再用修改后的变量。

一句话总结:检查你是不是把返回 None 的函数结果当数据用了。

递归调用时,else 那里没有用 return,丢失数据了

还要一个问题,lz 你最后字符串应该是错了吧,取反是[::-1]

嗯 取反错了 else 里加上 return 我得再去看看递归该怎么写

a. [:-1] 你是想干嘛
b. python 递归在调用的地方得带上 return,不然第一次出去的时候函数运行的结果就是 None,后面永远是 None。

回到顶部