1 还是 true ?

    xiaoxiao2021-03-25  151

    Python中对于条件判断,可以使用1或者True来作为expression,那么1和True有什么区别?

    运行一段代码来看看

    import timeit def while_true():     i=0     while True:         i+=1         if i==10000000:             break def while_1():     i=0     while 1:         i+=1         if i==10000000:             break if __name__ == "__main__":     t_one = timeit.timeit(while_1,"from __main__ import while_1",number=3)     t_true = timeit.timeit(while_true,"from __main__ import while_true",number=3)     print('while 1: %s\nwhile_true: %s'%(t_one,t_true)) timeit默认执行次数number为1000000次,这边没有使用默认值,而是把while循环次数设得比较高,你们可以想想是为什么?^_^

    py版本均为64位。

    在py2.7.13上运行结果的值比较稳定,我截取一个结果

    然后在py3.6.1上运行,

    what?py3上的while 1为什么会耗时更长?

    我们再来用dis查看while 1 和 while True的执行过程

    import dis def while_1(): while 1: pass def while_true(): while True: pass if __name__ == "__main__": print('while_1\n') dis.dis(while_1) print('while_true\n') dis.dis(while_true) py3上的执行过程,while 1和while True完全一样,可以对比一下py2上的dis解析结果,py2上True不是关键字,会多变量查找过程和比较过程,True耗时比1长是可以理解的

    为什么py3上,相同的过程会耗时不一致呢?

    试着将timeit的两句调换一下先后,变成这样

        t_true = timeit.timeit(while_true,"from __main__ import while_true",number=3)     t_one = timeit.timeit(while_1,"from __main__ import while_1",number=3)

    结果如下

    转载请注明原文地址: https://ju.6miu.com/read-25680.html

    最新回复(0)