社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

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

Ivan • 5 年前 • 772 次点击  

考虑一个返回半个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
 
772 次点击  
文章 [ 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