【问题标题】:Confusion with valueError vs ValueType try/exception混淆 valueError 与 ValueType 尝试/异常
【发布时间】:2017-06-04 03:05:40
【问题描述】:

我有一个关于将 str() 输入转换为 int() 类型的帖子的后续问题。根据 valueError 和 valueType 的定义,我希望 valueType 异常已经被使用,但是它不起作用(当我尝试它时)。 ValueError 有效,但我不确定为什么,int('some string') 不是错误类型的示例吗?

我指的是原始帖子的链接:Converting String to Int using try/except in Python

【问题讨论】:

  • 据我所知,python 标准库中没有ValueType 异常。你在哪里看到的?
  • 你说ValueType是指NoneType吗?

标签: python-3.x typeerror value-type


【解决方案1】:

来自文档:

class int(x, base=10) 返回一个从 a 构造的整数对象 数字或字符串 x,如果没有给出参数,则返回 0。如果 x 是 数字,返回 x.int()。对于浮点数,这会截断 趋近于零。

如果 x 不是一个数字或者如果给出了基数,那么 x 必须是一个字符串, 字节,或 bytearray 实例,表示基数中的整数文字 根据。可选地,文字可以在前面加上 + 或 - (没有空格 之间)并被空白包围。一个 base-n 文字由 数字 0 到 n-1,其中 a 到 z(或 A 到 Z)的值是 10 到 35。 默认基数为 10。允许的值为 0 和 2–36。基数 2,-8, 和 -16 字面量可以选择以 0b/0B、0o/0O 或 0x/0X,与代码中的整数文字一样。 Base 0 表示解释 与代码文字完全一样,因此实际的基数是 2、8、10 或 16, 因此 int('010', 0) 是不合法的,而 int('010') 也是如此 作为 int('010', 8)。

当您在字符串上调用 int() 函数时,它将尝试通过迭代字符串并将字符串对象转换为 int 对象,将其转换为参数中指定的基数(默认为 base-10)所需的基础。如果由于语法非法而无法进行转换,它将引发 ValueError ,因此请尽早终止程序。如果由于某种原因你想继续前进,你可以尝试一下:在代码中的 except 块来捕获异常。

来自文档:

异常 ValueError 在内置操作或函数时引发 接收到一个类型正确但不合适的参数 值,并且这种情况没有通过更精确的异常来描述 比如IndexError。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-15
    • 2015-03-07
    • 1970-01-01
    • 1970-01-01
    • 2012-03-25
    • 2016-06-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多