int()在python中的直觉行为

问题:

docs中明确指出int(number)是一种地板类型转换:

int(1.23)
1

int(string)当且仅当该字符串为整型文字时才返回int。

int('1.23')
ValueError

int('1')
1

有什么特别的原因吗?我发现它是违反直觉的,功能楼层在一种情况下,但不是另一种。

回答:

没有special原因。 Python只是简单地应用其不执行隐式转换的一般原则,这是众所周知的问题原因,特别是对于新手来说,Perl和Javascript等语言。
 int(some_string)是将字符串转换为整数格式的显式请求;此转换的规则指定字符串必须包含有效的整数文字表示。 int(float)是将浮点数转换为整数的显式请求;该转换的规则指定float的小数部分将被截断。
为了int("3.1459")返回3,解释器必须将字符串隐式转换为浮点数。由于Python不支持隐式转换,所以选择引发异常。

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: Counterintuitive behaviour of int() in python

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

− 7 = 2