# 运算符
# 算术运算符
如下:
>>> 1 + 2 # 加 3 >>> 1 - 2 # 减 -1 >>> 1 * 2 # 乘 2 >>> 2 ** 3 # 幂运算 8 >>> 2 / 1 # 一个斜杠 / 表示算术除(保留商的小数部分,结果为浮点型数字) 2.0 >>> 1 // 2 # 两个斜杠 // 表示整除(去除商的小数部分,结果为整型数字) 0 >>> 4 % 3 # 取模,也就是取余数 1
int 与 float 类型的值,都属于数字,可以混合运算。例如:
>>> 1 + 1.0 2.0 # int 与 float 混合运算时,结果会自动转换成 float 类型
数字与字符串,不可混合运算。例如:
>>> 1 + '1.0' Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unsupported operand type(s) for +: 'int' and 'str'
C 语言中有自加运算符、自减运算符,比如
a++
、a--
。而 Python 中没有这两种运算符,可以用a+=1
、a-=1
的方式,实现相似的功能。除法运算中,如果被除数为 0 ,则会抛出异常:
>>> 1 / 0 ZeroDivisionError: division by zero >>> 1 // 0 ZeroDivisionError: integer division or modulo by zero
# 赋值运算符
赋值运算符就是等号
=
,用于将等号右侧的值,赋予等号左侧的变量。在赋值的同时,可以进行算术运算。例如:
>>> a = 1 >>> a += 2 >>> a 3
>>> a = 1 >>> a /= 2 >>> a 0.5
可以连续使用多个等号,给多个变量传递赋予同一个值。例如:
a = b = c = 1
相当于:
c = 1 b = c a = b
如果等号右侧的值,属于可迭代对象,则可以 unpack 拆开成 n 个值,同时赋值给 n 个变量。
- 例:
>>> a, b = [1, 2] >>> a 1
- 如果等号左侧有 n>1 个变量,则等号右侧必须刚好有 n 个值,否则会抛出异常:
>>> a, b = [1] ValueError: not enough values to unpack (expected 2, got 1) >>> a, b = [1, 2, 3] ValueError: too many values to unpack (expected 2) >>> _, b, _ = [1, 2, 3] # 为了避免异常,可以用 _ 来接收多余的赋值。变量名为 _ 表示这是临时变量,读者不需要关心 >>> a, *others = [1, 2, 3] # 或者可以用 * 加变量名,接收任意数量(包括 0 个)的赋值
- 可通过该语法,交换几个变量的值。例如:相当于:
a, b = b, a
_ = b, a a, b = _
- 例:
# 比较运算符
又称为关系运算符,如下:
> # 大于 < # 小于 == # 等于 >= # 大于等于 <= # 小于等于 != # 不等于
- 如果比较运算的结果为真,则返回值为 True 。
- 如果比较运算的结果为假,则返回值为 False 。
可以连续使用多个比较运算符,同时比较多个值。
- 例:相当于:
>>> 1 < 2 < 3 True
>>> 1 < 2 and 2 < 3 True
- 例:
bool 值,与数字之间,可以比较运算。
- 例:
>>> True < 2 True
- 这是因为,Python 会自动将 bool 值转换成数字:
>>> int(True) 1 >>> int(False) 0
- 例:
str 对象之间,可以比较运算。
- 例:
>>> 'A' < 'a' # 比较两个 str 时,是比较第一个字符的 ASCII 码 True >>> 'AA' < 'Aa' # 如果第一个字符相同,则比较下一个字符的 ASCII 码 True >>> '' < 'A' True
- 但是,数字与 str 之间,不允许比较运算:
>>> 1 < 'a' TypeError: '<' not supported between instances of 'int' and 'str'
- 例:
# 逻辑运算符
and
与运算符- 语法:相当于:
x and y
if bool(x): return y else: return x
- 例:
>>> 1 and 'hello' 'hello'
- 语法:
or
或运算符- 语法:相当于:
x or y
if bool(x): return x else: return y
- 语法:
not
非运算符- 语法:相当于
not x
!bool(x)
!
也可进行非运算,常用于表达式中,左右可以没有空格。而 not 的左右必须存在空格。- 例:
>>> not 'Hello' False
- 语法:
# 三目运算符
- C 语言中,三目运算符写作
... ? ... : ...
格式。 - Python 中,三目运算符写作
<return_value> if <condition> else <return_value>
格式。- 功能:如果条件为真,则返回第一个值,否则返回第二个值。
- 例:
>>> 'hello' if 1>2 else 'world' 'world'
# 身份运算符
is
用于判断两个对象是否相同。- 例:
>>> a=b=1 >>> a is b # 相当于 id(a) == id(b) True
- 运算符
is
是判断两个对象的 id() 是否相同,运算符==
是判断两个对象的值是否相等。如下:>>> 0 is 0.0 False >>> 0 == 0.0 True
- 例:
is not
表示相反的运算。
# 成员运算符
in
用于判断左侧的对象,是否与右侧对象中某个成员的值相等。- 例:
>>> 'H' in 'Hello' True >>> 0 in [0.0, 1.0] True
- 例:
not in
表示相反的运算。
# 位运算符
- 位运算符是对二进制位进行运算,如下:
>>> x=1; y=0 >>> x & y # 按位与 0 >>> x | y # 按位或 1 >>> x ^ y # 按位异或 1 >>> ~ x # 取反(相当于 -x-1 ) -2 >>> x << 1 # 左移 2 >>> x >> 1 # 右移 0