Python 3.x TypeError:';的操作数类型不受支持;元组';和';int';:为什么我不能直接减去两个函数?

Python 3.x TypeError:';的操作数类型不受支持;元组';和';int';:为什么我不能直接减去两个函数?,python-3.x,Python 3.x,我试图计算两个函数的输出之差。 我以前学过java。在java中,使用一个函数直接减去另一个函数是可能的。 有人能告诉我为什么我不能在python中做同样的事情吗?是因为python不能做这件事,还是因为我不能用int类型对元组进行减法 from numba import jit import numpy as np import time @jit def foo(x: int, y: int) ->float: tt = time.time() s = 0

我试图计算两个函数的输出之差。 我以前学过java。在java中,使用一个函数直接减去另一个函数是可能的。 有人能告诉我为什么我不能在python中做同样的事情吗?是因为python不能做这件事,还是因为我不能用int类型对元组进行减法

from numba import jit
import numpy as np
import time


@jit
def foo(x: int, y: int) ->float:
    tt = time.time()
    s = 0
    for i in range(x,y):
           s += i
    print("Time used: {} sec".format(time.time() - tt))
    return s


print("value of foo", foo(1, 1000))


def foo2(x, y)->float:
    tt = time.time()
    s = 0
    for i in range(x, y):
       s += i
    print("Time used for foo2: {} sec".format(time.time() - tt))
    return s


print("value of foo2", foo2(1, 1000))

a= foo(1, 1000)
b= foo2(1, 1000)
print (a-b)
print(type(a))
print(type(b))
print(type(foo2((1, 1000)-foo(1, 1000))))
Excepted:获取两个不同函数的输出之差的浮点数

实际:

Traceback (most recent call last):
Time used: 0.03690075874328613 sec
  File "C:\Users\Administrator\PycharmProjects\untitled1\numbaTester.py", 
line 35, in <module>
value of foo 499500
print(type(foo2((1, 1000)-foo(1, 1000))))
Time used for foo2: 0.0 sec
TypeError: unsupported operand type(s) for -: 'tuple' and 'int'
value of foo2 499500
Time used: 0.0 sec
Time used for foo2: 0.0 sec
0
<class 'int'>
<class 'int'>
Time used: 0.0 sec
回溯(最近一次呼叫最后一次):
使用时间:0.03690075874328613秒
文件“C:\Users\Administrator\PycharmProjects\untitled1\numbaTester.py”,
第35行,在
foo 499500的价值
打印(类型(foo2((11000)-foo(11000)))
用于foo2的时间:0.0秒
TypeError:-:“tuple”和“int”的操作数类型不受支持
食物价值2 499500
所用时间:0.0秒
用于foo2的时间:0.0秒
0
所用时间:0.0秒

您的语法不正确,上一次打印语句中有一个额外的括号


如果您将其更改为
print(foo2(1,1000)-foo(1,1000))
,您将看到可以减去这些函数(或者您可以将其更改为
print(type(foo2(1,1000)-foo(1,1000))
,如果您只想查看输出类型而不是与初始尝试类似的结果)。

您的语法不正确,在上次打印的语句中有一个额外的括号


如果将其更改为
print(foo2(1,1000)-foo(1,1000))
,您将看到可以减去这些函数(或者如果您只想查看输出类型而不是与初始尝试类似的结果,可以将其更改为
print(type(foo2(1,1000)-foo(1,1000))
).

非常感谢您这么快的回答。我尝试了您的第一个建议删除type(),但仍然无法减去它们。控制台仍然显示:print(foo2((1,1000)-foo(1,1000)))TypeError:不支持的操作数类型-:“tuple”和“float”@arco-其中仍然有一个额外的括号。复制并粘贴以下内容,应该可以使用:
print(foo2(1,1000)-foo(1,1000))
非常感谢您这么快的回答。我尝试了您的第一个建议删除类型(),但我仍然无法减去它们。控制台仍然显示:print(foo2((1,1000)-foo(1,1000)))TypeError:不支持的操作数类型-:“tuple”和“float”@arco-其中仍然有一个额外的括号。复制并粘贴以下内容,它应该可以工作:
print(foo2(11000)-foo(11000))