python为了风格更简洁,和其他语言相比有一些特殊的运算符,这里面容易踩到坑。本周遇到一个,所以整理一下这方面。
逻辑运算符
优先级not>and>or
这次犯的错误就是判断条件
按照从左到有的顺序很明显是False,但其实python是先算and的。
>>> True or False and False
True
算数运算符
** 表示幂运算
>>> from timeit import timeit
>>> timeit('2 ** i', setup='i = 20')
0.06464695930480957
>>> timeit('pow(2, i)', setup='i = 20')
0.12627506256103516
>>> timeit('math.pow(2, i)', setup='import math; i = 20')
可以看出比pow和math.pow快,因为省掉了函数调用的时间
对应也有**=符号
对象判断运算符
is,isnot,其实就是判断两个值是不是同一个对象,占用同一地址空间