python-3.x - TypeError: unsupported operand type(s) for -: 'tuple' and 'int' : 为什么我不能直接减去两个函数?
问题描述
我正在尝试计算两个函数输出的差异。我之前学过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))))
例外:获取两个不同函数的输出差异的浮点数
实际的:
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
解决方案
您的语法不正确,您的最后一个打印语句中有一个额外的括号。
如果将其更改为print(foo2(1, 1000) - foo(1, 1000))
,您将看到可以减去这些函数(或者print(type(foo2(1, 1000) - foo(1, 1000)))
如果您只想查看输出类型而不是类似于您最初尝试的结果,则可以将其更改为)。
推荐阅读
- java - 我无法将组合框的值传递给对象。错误是“不兼容的类型:对象无法转换为大小”
- react-native - 如何在 flatList renderItem 中声明变量?
- dart - 分析器查找对潜在空值的未经检查的访问
- unity3d - Unity - 界面按钮从带有凹口的手机上的图形“错位”
- r - 将 m/d/y 到 y/m 的出现次数相加
- powershell - 如何使用 power shell 过滤特定单词
- reactjs - 我可以阻止在 React App 中的服务器端呈现某些路由吗
- c# - UWP 构建错误 - 资源的重复条目和冲突值
- typescript - TS2345 错误:指定函数参数类型
- javascript - 登录后显示每个用户的每日消息