程序地带

While 1比While True快?


While 1比While True快?


# python 2.0
import timeit
def while_one():
i = 0
while 1:
i += 1
if i == 10000000:
break
def while_true():
i = 0
while True:
i += 1
if i == 10000000:
break
if __name__ == "__main__":
w1 = timeit.timeit(while_one, "from __main__ import while_one", number=3)
wt = timeit.timeit(while_true, "from __main__ import while_true", number=3)
print "while one: %s while_true: %s" % (w1, wt)

执行结果: while one: 1.37000703812 while_true: 2.07638716698


其实这就是前提中提到的关键字的问题。由于Python2中,True/False不是关键字,因此我们可以对其进行任意的赋值,这就导致程序在每次循环时都需要对True/False的值进行检查;而对于1,则被程序进行了优化,而后不会再进行检查。


而在Python3中,由于True/False已经是关键字了,不允许进行重新赋值,因此,其执行结果与while 1不再有区别(好吧,我这没有Python3的环境,就不去验证了,网上有人验证过了)。但是由于Python2的使用十分广泛,因此大家不得不注意这个可能会降低性能的地方。


if x == True: 还是 if x


不论从遵循PEP的规范,还是执行效率,或者程序的简洁性来说,我们都应该使用if x:,而不是if x == True:来进行比较。同理,那些if x is not None:之类的语句也应当被简化为if x:(如果要比较的是非值,而不必须是None的话)。


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_46202060/article/details/111246014

随机推荐

我写了很多年的代码 最终回归了乡村

我写了很多年的代码 最终回归了乡村

 让年轻人回到农业,需要更具想象力和科技感的方式。符洪川已经做了13年的IT工程师,5年前却开始「养蜜蜂」创业。这样的选择其实不难理解。一方面符洪川的两代父辈都是养蜂人&#...

danba214 阅读(624)

【回归】回归修改补充

【回归】回归修改补充

昨天组会汇报了部分结果和内容,但是做的回归图部分被提出了好多问题!首先,P>0.05的即为关系不显著,这样的九八幺幺再画拟合曲线在上面了&...

Nengneng_Dog 阅读(778)

python的对象是什么_python对象揭秘

在顶层抽象上,python对象是属性、方法、作用域的集合。在底层实现上,python对象不过就是对c语言struct结构的封装。一个python的int类型可以写成这样&#...

weixin_39674028 阅读(227)

python取省边界_提取行政区边界经纬度坐标(高德+百度)

前言近来由于工作需要,需要提取某些城市的经纬度坐标,稍微搜索了一下,发现百度地图和高德地图都提供了相关的函数和例子.那么剩余的工作也就比较简单了,保存坐标,然后转换为WGS坐标,这样才能和现有的GPS...

weixin_39553705 阅读(791)