我应该使用浮点文字将整数表示为Python中的浮点数吗?

时间:2018-10-02 15:26:32

标签: python performance floating-point coding-style

考虑一个返回浮点参数一半的函数。应该是第一个还是第二个?

def half_a(x: float) -> float:
    return x / 2

def half_b(x: float) -> float:
    return x / 2.0

在性能上有什么区别吗?或者说有一种样式约定会说其中一种比另一种更好?

显然half_a看起来更好,并且更复杂的代码片段可能更易于阅读,但是在某些其他语言中,使用half_b版本以避免运行时是必要的或更可取的做法类型转换。

2 个答案:

答案 0 :(得分:2)

很难知道是否存在性能差异(如果存在,则可以忽略不计)。关于样式,也没有通用约定。但是,如果您使用的是python 3+,我会选择第一个。 Python 3对于整数除法具有不同的运算符。见下文

x = 2
print(type(x)) # int
print(type(x / 2)) # float
print(type(x // 2)) # int

另一方面,如果您使用的是python 2,则应该选择第二个,因为如果您的参数碰巧是int

print(2/5) # 0

答案 1 :(得分:1)

float除以float比{{1}除以float快一点:

int