我很好奇哪种形式更有效,风格正确等等。我觉得“.0”方法要快得多;我不确定为什么“浮动”方法同样受到赞赏(如果是的话)。
7 回答
使用该7.0
方法,该float(7)
方法用于将整数或字符串类型转换为浮点数,因此它是一种不同的用途,例如:
a = 7
b = "7"
print float(a)
7.0
print float(b)
7.0
使用float(7)
会增加一些不必要的开销——Python 必须在其中找到float
函数globals()
并调用它。Using7.0
在编译时而不是运行时进行所有必要的转换。您可以使用Python 字节码反汇编程序来查看这一点。
>>> import dis
>>> def f(): return 7.0
...
>>> def g(): return float(7)
...
>>> dis.dis(f)
1 0 LOAD_CONST 1 (7.0)
3 RETURN_VALUE
>>> dis.dis(g)
1 0 LOAD_GLOBAL 0 (float)
3 LOAD_CONST 1 (7)
6 CALL_FUNCTION 1
9 RETURN_VALUE
The following are all equivalent in Python:
>>> 7. == 7.0 == float(7) == float("7")
True
I would avoid using float(7)
or float("7")
when you are hard-coding the value, as the Python interpreter must first cast the value to an integer or a string, and then convert it to floating-point.
To avoid that overhead, use 7.
or 7.0
to give Python a float literal.
Of course, float()
should still be used to convert other data types to a float.
浮点文字可以写成7.0
,这很好,因为它们自动属于 类型float
。
如果您打算将整数或字符串转换为浮点数,则该float()
函数是合适的,但不需要调用该函数来编写浮点文字。
7.0
应该更快。 float(7)
创建一个整数,然后调用float()
函数将整数转换为浮点数,因此调用float(7)
暗示函数调用开销以及float()
函数可能执行的任何错误检查。
当然,对于大多数实际目的,速度差异不太重要(除非您处于代码被调用数亿次的深层循环中),但是当解释器具有用于构造浮点数的内置语法。
float()
当您想要转换的不是浮点数(如字符串或整数)时使用。
7.0“更好”,不需要演员浮动,它会自动完成。
float() 最好保存用于将非浮点数转换为浮点数。
在以后重新阅读代码时,使用float(0)
更加明确,如果您不小心丢弃了“ .0
”,以后会减少混乱。