运算符

运算符的优先级,

1 + 2 * 3
7
2 * 3 ** 2
18

# 算术运算符优先级高于比较运算符
2 * 3 > 1 + 2
True

# 比较运算符的优先级高于逻辑运算符
2 * 3 > 1 + 2 and True
True

(2 * 3 > 1 + 2) and True
True
# 拿不准的时候加括号

算术运算符

算术运算符通常只针对数值类型。注意与Python2的区别。

自然除,

>>> 3 / 5
0.6

整除,

>>> 3 // 5
0

逻辑运算符

参与逻辑运算的成员只能是bool类型,或者可以隐式转化为bool类型的类型。

and需要运算符两边都是True结果才为True。

True and True
True

or只要运算符两边任意一个为True,结果就为True,

True or False
True

短路,

not True
False

看一个例子,

def add(x, y):
    print('{0} + {1}'.format(x, y))
    return x + y

add(1, 3)
1 + 3
4

add(1, 3) > add(1, 2) and (2, 4) < add(3, 4)
1 + 3
1 + 2
2 + 4
3 + 4
True

# 逻辑运算总是从左到右计算,一旦能够决定表达式最终的值,将立刻停止计算,
# 并返回
add(1, 3) < add(1, 2) and (2, 4) < add(3, 4)
1 + 3
1 + 2
False

add(1, 3) > add(1, 2) or add(2, 4) < add(3, 4)
1 + 3
1 + 2
True

比较运算符

  1. 相等 ==
  2. 不等于 !=
  3. 大于 &gt;
  4. 大于等于 &gt;=
  5. 小于 &lt;
  6. 小于等于 &lt;=

几个例子,

1 == 1
True

1 == 2
False

1 != 2
True

1 > 2
False

2 > 1
True

2 >= 1
True

2 >= 2
True

除了==和!=,两边的类型相同。

位运算符

# 按位与
bin(60)
'0b111100'
# 0011 1100
bin(12)
'0b1100'
# 0000 1100
60 & 12
12

# 按位或
60 | 12
60
# 按位异或
# 相同为0,不同为1
60 ^ 12
48

# 取反
~60
-61

# 右移
60 >> 2
15

# 左移
60 << 2
240

其他运算符

  1. 赋值
    a = 1
    a = 3 + 4
    # 左边是一个标识符,右边是一个值(或者可以计算为一个值)
    # 让这个标识符指向这个值所的内存
  2. 成员运算符
  3. 身份运算符

成员运算符

用于判断一个元素是否在容器中。

  1. in
  2. not in

举个简单的例子:

>>> L1 = [1, 2, 3]
>>> 1 in L1
True
>>> s = 'spam'
>>> 'a' in s
True
>>> 'x' in s
False
>>> 'x' not in s
True