python中的ValueError和TypeError

时间:2018-01-19 14:33:55

标签: python typeerror valueerror

我无法完全理解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'

3 个答案:

答案 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 因为列表永远不能转换为浮点数。

Cite

答案 1 :(得分:1)

只想在大卫的回答中再加一点。

当我们向函数传递不正确的参数个数时,也会发生

TypeError。

例如:

def hello(int x,int y):
    pass

hello(12)

这还会给您带来TypeError:

hello()缺少1个必需的位置参数:“ y”

答案 2 :(得分:0)

ValueError函数调用了正确类型的值,但是值不正确

TypeError:对不适当类型的值调用函数