在Python中,我应该使用float文本将整数表示为float吗?

2024-05-16 22:08:25 发布

您现在位置:Python中文网/ 问答频道 /正文

考虑一个返回float参数一半的函数。最好是第一个还是第二个?你知道吗

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

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

是否有任何性能上的差异,或者是否有一种风格惯例可以说其中一种比另一种更好?你知道吗

显然half_a看起来更好,用这种方法编写的更复杂的代码可能更可读,但在某些其他语言中,使用half_b版本来避免运行时类型转换是必要的或更可取的。你知道吗


Tags: 方法函数代码版本语言参数return风格
2条回答

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

很难知道是否有性能上的差异(如果有,那肯定可以忽略不计)。关于风格,也没有共同的惯例。但是,如果您使用的是python3+,我会选择第一个。python3有一个不同的整数除法运算符。见下文

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

另一方面,如果您使用的是python2,则可能应该选择第二个,因为如果您的参数恰好是int

print(2/5) # 0

相关问题 更多 >