Py学习  »  Python

我应该使用float文本在python中将整数表示为浮点数吗?

Ivan • 5 年前 • 793 次点击  

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

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

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

是否有任何性能差异,或者是否有一种风格约定会说其中一个比另一个更好?

清楚地 half_a 看起来更好,更复杂的代码段可能以这种方式得到更可读的写入,但在某些其他语言中,使用 half_b 避免运行时类型转换的版本。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/30400
 
793 次点击  
文章 [ 2 ]  |  最新文章 5 年前
blue_note
Reply   •   1 楼
blue_note    5 年前

很难知道是否存在性能差异(如果存在,则绝对可以忽略不计)。关于风格,也没有共同的约定。但是,如果您使用的是Python3+,我会选择第一个。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
Steven Rumbalski
Reply   •   2 楼
Steven Rumbalski    5 年前

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