Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中的返回类型错误_Python - Fatal编程技术网

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
至少有三个原因不起作用

  • Python懒散地计算
    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
    
    至少有三个原因不起作用

  • Python懒散地计算
    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