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

Should I use float literals to represent integer numbers as floats in Python?

考虑一个 return 半个浮点参数的函数。是第一个好还是第二个好?

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 除以 floatfloat 除以 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