我无法完全理解Python3x中Type和Value错误之间的区别。
为什么在尝试float('string')而不是TypeError时会得到ValueError?不应该给出一个TypeError,因为我传递一个'str'类型的变量要转换成float?
In [169]: float('string')
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-169-f894e176bff2> in <module>()
----> 1 float('string')
ValueError: could not convert string to float: 'string'
答案 0 :(得分:10)
值错误是
当内置操作或函数接收到具有正确类型但值不合适的参数时引发
float('5')
函数可以带一个字符串,即'string'
,只是float('string')
中的值TypeError
是不合适的(不可转换的)字符串
另一方面,
传递错误类型的参数(例如,在期望int时传递列表)应该导致TypeError
因此,如果您尝试float(['5'])
,则会获得With ActiveSheet
eLastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
End With
aRow = 2
cBIN = Range(Cells(2, 26), Cells(eLastRow, 26))
dDealer = Range(Cells(2, 4), Cells(eLastRow, 4))
While aRow <= eLastRow
Cells(aRow, 35) = cBIN(aRow - 2) & " - " & dDealer(aRow - 2)
aRow = aRow + 1
Wend
因为列表永远不能转换为浮点数。
答案 1 :(得分:1)
只想在大卫的回答中再加一点。
当我们向函数传递不正确的参数个数时,也会发生TypeError。
例如:
def hello(int x,int y):
pass
hello(12)
这还会给您带来TypeError:
hello()缺少1个必需的位置参数:“ y”
答案 2 :(得分:0)
ValueError函数调用了正确类型的值,但是值不正确
TypeError:对不适当类型的值调用函数