python 中的 ValueError 和 TypeError
ValueError and TypeError in python
我不能完全理解 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'
值错误是
Raised when a built-in operation or function receives an argument that has the right type but an inappropriate value
float
函数可以取一个字符串,即float('5')
,只是float('string')
中的值'string'
是一个不合适的(不可转换的)字符串
另一方面,
Passing arguments of the wrong type (e.g. passing a list when an int is expected) should result in a TypeError
因此,如果您尝试 float(['5'])
,您将得到 TypeError
,因为列表永远无法转换为浮点数。
ValueError 函数被正确类型的值调用,但值不合适
TypeError : 函数被调用的值类型不当
只想对 David 的回答再补充一点。
TypeError 也可能发生,当我们将不正确的参数传递给函数时。
例如:
def hello(int x,int y):
pass
hello(12)
这也会给你 TypeError:
hello() 缺少 1 个必需的位置参数:'y'
它们在
Python Documentation.
我会为它们添加示例:
类型错误:
10 + 'a'
值错误:
int("hello")
我不能完全理解 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'
值错误是
Raised when a built-in operation or function receives an argument that has the right type but an inappropriate value
float
函数可以取一个字符串,即float('5')
,只是float('string')
中的值'string'
是一个不合适的(不可转换的)字符串
另一方面,
Passing arguments of the wrong type (e.g. passing a list when an int is expected) should result in a TypeError
因此,如果您尝试 float(['5'])
,您将得到 TypeError
,因为列表永远无法转换为浮点数。
ValueError 函数被正确类型的值调用,但值不合适
TypeError : 函数被调用的值类型不当
只想对 David 的回答再补充一点。
TypeError 也可能发生,当我们将不正确的参数传递给函数时。
例如:
def hello(int x,int y):
pass
hello(12)
这也会给你 TypeError:
hello() 缺少 1 个必需的位置参数:'y'
它们在 Python Documentation.
我会为它们添加示例:
类型错误:
10 + 'a'
值错误:
int("hello")