我们现在给出一个交互操作的例子 - 从最基本的错误检测开始, 然后逐步改进它, 增强代码的健壮性. 这里的问题是把一个用字符串表示的数值转换 为正确的数值表示形式, 而且在过程中要检测并处理可能的错误.
float() 内建函数的基本作用是把任意一个数值类型转换为一个浮点数. 从 Python 1.5 开始, float() 增加了把字符串表示的数值转换为浮点数的功能, 没必要使用 string 模块中的 atof() 函数. 如果你使用的老版本的 Python , 请使用 string.atof() 替换这里的 float() .
>>> float(12345) 12345.0 >>> float('12345') 12345.0 >>> float('123.45e67') 1.2345e+069
不幸的是, float() 对输入很挑剔:
>>> float('foo') Traceback (innermost last): File "<stdin>", line 1, in ? float('foo') ValueError: invalid literal for float(): foo >>> >>> float(['this is', 1, 'list']) Traceback (innermost last): File "<stdin>", line 1, in ? float(['this is', 1, 'list'])
从上面的错误我们可以看出, float() 对不合法的参数很不客气. 例如, 如果参数的类型正确(字符串), 但值不可转换为浮点数, 那么将引发 ValueE