在Python中使用7.0或float(7)的计算密集程度较低吗?

时间:2012-07-13 18:39:21

标签: python types

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

7 个答案:

答案 0 :(得分:9)

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

a = 7
b = "7"
print float(a)
7.0
print float(b)
7.0

答案 1 :(得分:9)

使用float(7)会增加一些不必要的开销 - Python必须在float中找到globals()函数并调用它。使用7.0在编译时执行所有必要的转换,而不是运行时。您可以使用Python bytecode disassembler

查看此内容
>>> 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        

答案 2 :(得分:6)

以下在Python中都是等效的:

>>> 7. == 7.0 == float(7) == float("7")
True

当你对值进行硬编码时,我会避免使用float(7)float("7"),因为Python解释器必须首先将值转换为整数或字符串,然后将其转换为浮点数 - 点。

为避免这种开销,请使用7.7.0为Python提供浮动文字。

当然,float()仍应用于将其他数据类型转换为浮点数。

答案 3 :(得分:1)

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

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

答案 4 :(得分:0)

7.0是“更好”,不需要使用强制转换,它会自动执行。

最好保存

float(),以便将非浮点数转换为浮点数。

答案 5 :(得分:0)

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

答案 6 :(得分:0)

7.0应该更快。 float(7)创建一个整数,然后调用float()函数将整数转换为float,因此调用float(7)会隐含函数调用开销以及检查float()函数的任何错误可能会这样做。

对于大多数实际目的,当然,速度上的差异不太可能很重要(除非你处于深度循环中,你的代码被调用了数亿次),但是调用转换有些不合适解释器具有构建浮点数的内置语法时的函数。

当你想要转换的东西不是浮点数(如字符串或整数)时,请使用float()