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

pip*_*ter 9 python types

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

Has*_*sek 9

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

a = 7
b = "7"
print float(a)
7.0
print float(b)
7.0
Run Code Online (Sandbox Code Playgroud)


Mic*_*man 9

使用float(7)增加了一些不必要的开销 - Python必须找到float函数globals()并调用它.使用7.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        
Run Code Online (Sandbox Code Playgroud)


Rob*_*ati 6

以下在Python中都是等效的:

>>> 7. == 7.0 == float(7) == float("7")
True
Run Code Online (Sandbox Code Playgroud)

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

为了避免这种开销,使用7.7.0给Python一个浮点字面值.

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