9

我很好奇哪种形式更有效,风格正确等等。我觉得“.0”方法要快得多;我不确定为什么“浮动”方法同样受到赞赏(如果是的话)。

4

7 回答 7

9

使用该7.0方法,该float(7)方法用于将整数或字符串类型转换为浮点数,因此它是一种不同的用途,例如:

a = 7
b = "7"
print float(a)
7.0
print float(b)
7.0
于 2012-07-13T18:42:12.547 回答
9

使用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        
于 2012-07-13T18:46:35.673 回答
6

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.

于 2012-07-13T18:49:37.333 回答
1

浮点文字可以写成7.0,这很好,因为它们自动属于 类型float

如果您打算将整数或字符串转换为浮点数,则该float()函数是合适的,但不需要调用该函数来编写浮点文字。

于 2012-07-13T18:41:50.863 回答
0

7.0应该更快。 float(7)创建一个整数,然后调用float()函数将整数转换为浮点数,因此调用float(7)暗示函数调用开销以及float()函数可能执行的任何错误检查。

当然,对于大多数实际目的,速度差异不太重要(除非您处于代码被调用数亿次的深层循环中),但是当解释器具有用于构造浮点数的内置语法。

float()当您想要转换的不是浮点数(如字符串或整数)时使用。

于 2012-07-13T18:52:52.637 回答
0

7.0“更好”,不需要演员浮动,它会自动完成。

float() 最好保存用于将非浮点数转换为浮点数。

于 2012-07-13T18:41:10.323 回答
0

在以后重新阅读代码时,使用float(0)更加明确,如果您不小心丢弃了“ .0”,以后会减少混乱。

于 2012-07-13T18:42:29.420 回答