TypeError:-:'tuple'和'int'不支持的操作数类型:为什么我不能直接减去两个函数?

时间:2019-02-09 03:19:25

标签: python-3.x

我正在尝试计算两个函数的输出之差。 我以前学习过Java。在Java中,使用一个函数直接减去另一个函数是可能的。 有人可以告诉我为什么我不能在python中做同样的事情吗?仅仅是因为becuz python无法做到这一点,还是因为becuz我不​​能减去具有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))))

例外:获取两个不同函数的输出之差的浮点数

实际:

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

1 个答案:

答案 0 :(得分:0)

您的语法不正确,您在最后一个打印语句中加上了一个括号。

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