运算符是一种符号, 它告诉编译器或解释器如何对两个或多个值进行操作.
运算符主要包括算术运算符, 赋值运算符, 关系运算符, 逻辑运算符, 位位运算符, 条件运算符等.
使用运算符将不同的数据按照一定的规则连接起来的句子称为表达式.
运算符
算术运算符
- 加法运算符 (+)
- 减法运算符 (-)
- 乘法运算符 (*)
- 除法运算符 (/)
- 取模运算符 (%)
- 指数运算符 (**)
- 取整除运算符 (//)
|运算符| 描述 |示例|
|- |————————-|-|
|+| 加法-两个对象相加 |a + b|
|-| 减法-两个对象相减或者得到一个数的相反数 |a – b|
|*| 乘法-两个对象相乘或者一个被重复若干次的字符串 |a * b|
|/| 除法-两个对象相除 |a / b|
|%| 取模-两个对象相除后的余数 |a % b|
|**| 幂-返回a的b次幂 |a ** b|
|//| 取整除-往小的方向取整 |a // b|
a = 21
b = 10
c = 0
c = a + b
print (c)
c = a - b
print (c)
c = a * b
print (c)
c = a / b
print (c)
c = a % b
print (c)
# 修改变量 a 、b 、c
a = 2
b = 3
c = a**b
print (c)
a = 10
b = 5
c = a//b
print (c)
输出:
31
11
210
2.1
1
8
2
赋值运算符
- 等于运算符 (=)
- 加等于运算符 (+=)
- 减等于运算符 (-=)
- 乘等于运算符 (*=)
- 除等于运算符 (/=)
- 取模等于运算符 (%=)
- 指数等于运算符 (**=)
- 取整除等于运算符 (//=)
|运算符| 描述 |示例|
|- |———-|-|
|=| 赋值-将一个值赋给一个变量 |a = b|
|+=| 加等于-将一个值加到变量上 |a += b|
|-=| 减等于-将一个值减去变量上 |a -= b|
|*=| 乘等于-将一个值乘到变量上 |a *= b|
|/=| 除等于-将一个值除去变量上 |a /= b|
|%=| 取模等于-将一个值取模到变量上 |a %= b|
|**=| 指数等于-将一个值指数到变量上 |a **= b|
|//=| 取整除等于-将一个值取整除到变量上 |a //= b|
a = 10
a += 5
print (a)
a = 10
a -= 5
print (a)
a = 10
a *= 5
print (a)
a = 10
a /= 5
print (a)
a = 10
a %= 5
print (a)
a = 2
a **= 3
print (a)
输出:
15
5
50
2.0
0
8
比较(关系)运算符
用于比较两个值之间的关系.如果关系成立, 则返回 True, 否则返回 False.
- 等于运算符 (==)—— 初学者很容易写成
=
, 二者是完全不同的运算符. - 不等于运算符 (!=)
- 大于运算符 (>)
- 小于运算符 (<)
- 大于等于运算符 (>=)
- 小于等于运算符 (<=)
|运算符| 描述 |示例|
|- |———-|-|
|==| 等于-判断两个对象是否相等 |a == b|
|!=| 不等于-判断两个对象是否不相等 |a != b|
|> | 大于-判断一个对象是否大于另一个对象 |a > b|
|< | 小于-判断一个对象是否小于另一个对象 |a < b| |>=| 大于等于-判断一个对象是否大于等于另一个对象|a >= b|
|<=| 小于等于-判断一个对象是否小于等于另一个对象|a <= b|
a = 10
b = 20
c = 30 if a > b else 20 if a < b else 10
print (c) # 20
逻辑运算符
- 逻辑与运算符 (and)
- 逻辑或运算符 (or)
- 逻辑非运算符 (not)
|运算符| 描述 | 示例 |
|- |———-|————–|
|and| 逻辑与-只有所有条件都为 True, 表达式才为 True| x and y |
|or | 逻辑或-只要任何一个条件为 True, 表达式就为 True| x or y |
|not| 逻辑非-用于反转表达式的结果, 即 True 变 False, False 变 True| not(x and y) |
使用逻辑运算符进行逻辑运算有以下规则
- 短路计算: 逻辑与运算符 (and) 和逻辑或运算符 (or) 遵循短路计算规则, 即如果第一个操作数可以确定整个表达式的值, 则不会计算第二个操作数.
- 优先级: 逻辑非运算符 (not) 的优先级最高, 其次是逻辑与运算符 (and), 最后是逻辑或运算符 (or).
位运算符
位运算符是一种特殊的运算符, 它对数字的二进制位进行操作.
- 按位与运算符 (&)
- 按位或运算符 (|)
- 按位异或运算符 (^)
- 按位取反运算符 (~)
- 左移运算符 (<<)
- 右移运算符 (>>)
按位与运算符 (&) 用于对两个二进制数的每一位进行比较, 如果两个相应位都为 1, 则该位的结果为 1, 否则为 0.
按位或运算符 (|) 用于对两个二进制数的每一位进行比较, 如果两个相应位中有 1, 则该位的结果为 1, 否则为 0.
按位异或运算符 (^) 用于对两个二进制数的每一位进行比较, 不同时为0或者1, 则该位的结果为 1, 否则为 0.
按位取反运算符 (~) 用于对一个二进制数的每一位进行取反操作, 即 0 变成 1, 1 变成 0.
左移运算符 (<<) 用于将一个二进制数的各二进位全部左移若干位, 由 << 右边的数字指定了移动的位数, 高位丢弃, 低位补 0. 左移相当于乘以 2 的若干次方.
右移运算符 (>>) 用于将一个二进制数的各二进位全部右移若干位, 由 >> 右边的数字指定了移动的位数, 低位丢弃, 高位补 0. 右移相当于除以 2 的若干次方.
a = 0011 1100
b = 0000 1101
-----------------
a&b = 0000 1100
a|b = 0011 1101
a^b = 0011 0001
~a = 1100 0011
运算符优先级
运算符的优先级决定了表达式中运算符的结合顺序.
运算符的优先级从高到低依次为:
- 圆括号 ( )
- 指数运算符 (**)
- 乘除模运算符 (* / % //)
- 加减运算符 (+ -)
- 位移运算符 (<< >>)
- 位运算符 (& | ^)
- 比较运算符 (== != > < >= <=)
- 赋值运算符 (= += -= *= /= %= **= <<= >>=)
- 逻辑运算符 (not and or)
建议使用括号()
来明确运算顺序, 避免出现错误.
条件表达式
条件表达式是一种表达式, 它根据条件来决定执行哪个分支的代码.
语法:
表达式1 if 条件 else 表达式2
如果条件为 True, 则执行表达式1, 否则执行表达式2.
a = 10
b = 20
c = 30 if a > b else 20 if a < b else 10
print (c)
输出:
20