[英]Should I use float literals to represent integer numbers as floats in Python?
考虑一个返回浮点参数一半的函数。 应该是第一还是第二?
def half_a(x: float) -> float:
return x / 2
def half_b(x: float) -> float:
return x / 2.0
是否存在任何性能差异,或者是否存在样式约定,这些约定中的一种优于另一种?
显然, half_a
看起来更好,并且更复杂的代码片段可以通过这种方式编写,从而更具可读性,但是在某些其他语言中,有必要或最好使用half_b
版本以避免运行时类型转换。
很难知道是否存在性能差异(如果存在,则可以忽略不计)。 关于样式,也没有通用约定。 但是,如果您使用的是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
float
除以float
比float
除以int
快一点:
>>> timeit.timeit('n/2', 'n=123456.789')
0.04134701284306175
>>> timeit.timeit('n/2.0', 'n=123456.789')
0.03455621766488548
>>> timeit.timeit('[n/2 for n in r]', 'r = [n*5/1.1 for n in range(1, 10001)]', number=10000)
5.177127423787169
>>> timeit.timeit('[n/2.0 for n in r]', 'r = [n*5/1.1 for n in range(1, 10001)]', number=10000)
4.067747102254316
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.