Python报错: TypeError: unsupported operand type(s) for *: ‘int’ and ‘NoneType’
错误来源:
def factorial(n):
"""计算阶乘"""
if n != 1:
n = n * factorial(n - 1)
else:
return n
print(factorial(3))
错误解释:
对运算符*
来说,不支持整型int
和无类型None
两种类型之间的运算操作
分析:
这说明, 递归过程中出现了 数字*
None的情况.进一步验证, 执行以下代码
print(3*None)
报错,错误信息一致
TypeError: unsupported operand type(s) for *: ‘int’ and ‘NoneType’
因此证实了猜想. 回顾代码, 原来是if语句块没有返回值,导致函数返回了None
改正代码:
def factorial(n):
"""计算阶乘"""
if n != 1:
n = n * factorial(n - 1)
return n
else:
return n
print(factorial(3))
总结
函数中报错出现NoneType
,可以查看函数体中是否有返回None
的情况, 一般是忘写return
所致