python中的返回类型错误
所以我在一个递归调用的线路上得到了这个错误。发生错误的行类似于:python中的返回类型错误,python,Python,所以我在一个递归调用的线路上得到了这个错误。发生错误的行类似于:returnsome_func(x)-.2 TypeError:-:'NoneType'和'float'的操作数类型不受支持。 我尝试了返回一些_func(x)-.2和x not None和float(x)is True,以及其他技巧,但到目前为止都没有成功 谢谢 在没有看到代码的情况下,错误消息似乎暗示在某个点上,函数some_func(x)返回None。正如消息所述,在Python中不可能执行None和float之间的减法操作
returnsome_func(x)-.2
TypeError:-:'NoneType'和'float'的操作数类型不受支持。
我尝试了返回一些_func(x)-.2和x not None和float(x)is True
,以及其他技巧,但到目前为止都没有成功
谢谢 在没有看到代码的情况下,错误消息似乎暗示在某个点上,函数
some_func(x)
返回None
。正如消息所述,在Python中不可能执行None
和float
之间的减法操作
跟踪您的函数,确保它始终返回一个数值,并且不应出现该问题。或者,更改您的代码以检查None
(如@daknok所示)的返回,并以这种方式避免问题-但是,最好从源代码处防止问题
请注意下面@burhan Kahlid的精彩评论。在没有看到您的代码的情况下,错误消息似乎暗示在某个时候您的函数
some_func(x)
返回None
。正如消息所述,在Python中不可能执行None
和float
之间的减法操作
跟踪您的函数,确保它始终返回一个数值,并且不应出现该问题。或者,更改您的代码以检查None
(如@daknok所示)的返回,并以这种方式避免问题-但是,最好从源代码处防止问题
请注意下面@burhan Kahlid的精彩评论。some_func(x)
返回None
,并且不能从None
中减去浮点-这没有任何意义。根据需要,您可以确保some_func(x)
从不返回None
(通过更改some_func
的实现),或者执行以下操作:
y = some_func(x)
if y is not None:
return y - .2
else:
return None
最后两行可以省略,因为Python中的函数隐式返回None
None
,并且不能从None
中减去浮点-这没有任何意义。根据需要,您可以确保some_func(x)
从不返回None
(通过更改some_func
的实现),或者执行以下操作:
y = some_func(x)
if y is not None:
return y - .2
else:
return None
最后两行可以省略,因为Python中的函数隐式返回您的修复
return some_func(x) - .2 and x not None and float(x) is True
至少有三个原因不起作用
和s
也就是说,A和B
首先计算A
,然后如果A
为真,则计算B
。在您的情况下,计算A
会导致异常,因此您甚至无法访问B
x非无
,非x非无
某些函数(x)
是None
,而不是x
是None
。检查后者是无关紧要的无论如何,解决方案不是从可能为
None
的值中减去浮点值。最好的方法是确保some_func
永远不会返回None
,这可以通过修改其代码来实现。下一个最好的方法是检查返回值,您可以按照
output = some_func(x)
if output is not None:
return output - 0.2
顺便说一句,请注意,如果函数不返回任何内容,那么它将被视为隐式返回None
。因此,如果some_func
执行了,上述代码将返回None
。这也可能是问题的根源。您的解决方案
return some_func(x) - .2 and x not None and float(x) is True
至少有三个原因不起作用
和s
也就是说,A和B
首先计算A
,然后如果A
为真,则计算B
。在您的情况下,计算A
会导致异常,因此您甚至无法访问B
x非无
,非x非无
某些函数(x)
是None
,而不是x
是None
。检查后者是无关紧要的无论如何,解决方案不是从可能为
None
的值中减去浮点值。最好的方法是确保some_func
永远不会返回None
,这可以通过修改其代码来实现。下一个最好的方法是检查返回值,您可以按照
output = some_func(x)
if output is not None:
return output - 0.2
顺便说一句,请注意,如果函数不返回任何内容,那么它将被视为隐式返回
None
。因此,如果some_func
执行了,上述代码将返回None
。这也可能是您的问题的根源。如果没有看到您的代码,您怎么能指望有人解决您的问题呢?它有300多行代码。我想我会把我有问题的那句话发出去,然后给你一些背景资料。谢谢。你的一些函数(x)
有300行吗?你可以发布相关的函数。你怎么能指望任何人在没有看到你的代码的情况下解决你的问题呢?它有300多行代码。我想我会把我有问题的那句话发出去,然后给你一些背景资料。谢谢。你的一些函数(x)
有300行吗?您可以发布相关函数。y不是None
是更具python风格的测试。@RohitJain,有些人认为它不可读,但您是对的。@daknøk。为什么这是不可读的。它只是一个用Python编写的条件表达式。忽略返回值
并查看代码的其余部分。。您很容易理解。这也足够了:返回y-.2如果y不是None
@RohitJain,则形式上不是,但y不是None