- 运算符:也称操作符
- 算术运算符、关系运算符、逻辑运算符、位运算符和其他运算符
算术运算符
一元运算符
取反运算:-a
二元运算符
- ±*/
- % 取余 ** 幂 // 商
+ *
可以用于字符串、元组和列表
关系运算符
是比较两个表达式的大小关系的运算,结果是布尔类型,True和False
== != < <= > >=
字符串、列表和元组也可以比较
逻辑运算符
对布尔类型进行运算,结果也是布尔类型not and or
位运算符
是以二进制bit为单位进行运算的,操作数和结果都是整型
& | ^ ~ >> <<
赋值运算符
赋值运算符只是一种简写,一般用于变量自身的变化
+=
加赋值 a += b
-=
减赋值 a -= b
*= /= %= **= //= &= |= ^= <<= >>=
同一性测试运算符
就是测试两个对象是否是同一个对象,类似与 == 运算符,不同之处是 == 是测试两个对象的内容是否相同,当然如果同一对象 == 也返回 True
同一性测试运算符有两个:is 和 is not
# /usr/bin/python
# -*- coding: utf-8 -*-
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
p1 = Person('Tony', 18)
p2 = Person('Tony', 18)
print(p1 == p2) # False
print(p1 is p2) # False
自定义类person,有两个实例变量,实例化了两个对象
== 虽然是比较两个对象的内容是否相等,但是也需要告诉对象的比较规则是什么,这需要
重写__eq__方法,指定比较规则
# /usr/bin/python
# -*- coding: utf-8 -*-
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __eq__(self, other):
if self.name == other.name and self.age == other.age:
return True
else:
return False
p1 = Person('Tony', 18)
p2 = Person('Tony', 18)
print(p1 == p2) # True
print(p1 is p2) # False
重写__eq__方法,定义了同时相等,对象菜相等
成员测试运算符
可以测试在一个序列sequence对象中是否包含某一个元素
成员测试符号有:in 和 not in
print('a' in 'apple')
print(2 in [1,2])
运算符优先级
优先级由高到低
1. ()
2. f(参数):函数调用
3. [start:end],[start:end:step]:分片
4. [index]:下标
5. . :引用类成员
6. ** 幂
7. ~ 位反
8. +,- 正负号
9. *,/,%
11. >> <<
12. &
13. ^
14. |
15. in,not in,is,not is,<,<=,>,>=,<>,!=,==
16. not
17. and
18. or
19. lambda
大体:算术》位运算》关系》逻辑》赋值