运算就是用值来做各种变化的游戏,例如 1 + 1
得到 2
,其中 +
是加法的运算符。
关于运算符,请参考 Python 官方文档 - 运算符
Python 使用 =
作为赋值运算符,用于修改变量的值,而非数学中的“等于”。
此外还还可以使用 count += 1
作为 count = count + 1
的简写,其中 +
可以替换为任意算术运算符。
Python 中变量创建后可以给他赋值其它类型的的值:
age_of_yukari:int = 17 # 类型为 int
age_of_yukari = "17" # 类型为 str
但是建议 不要修改变量的类型。
海象运算符(:=
)是一种特殊的赋值运算符,它不能直接用于给变量赋值,只能在表达式内赋值。例如:
x:int = 0
y:int = 0
sum_squares:int = x**2 + y**2
# 传统做法
x = 5
y = 10
sum_squares = x**2 + y**2
# 使用海象运算符
sum_squares = (x := 5)**2 + (y := 10)**2
并且,赋值运算符(=
)没有返回值,无法作为 if
、while
等控制块的条件,而海象运算符(:=
)可以。
:=
)需要 Python 版本 \(\geq\) 3.8运算符 | 名称 | 示例 | 结果 | 说明 |
---|---|---|---|---|
+ |
加法运算符 | 3 + 5 |
7 |
|
- |
减法运算符 | 5 - 3 |
2 |
|
* |
乘法运算符 | 5 * 3 |
15 |
|
/ |
除法运算符 | 5 / 2 |
2.5 |
无论能否整除,结果类型都是浮点型 |
// |
整除运算符 | 5 // 2 |
2 |
结果向下取整,如果被除数和除数都是整型,则结果为整型,否则结果为浮点型 |
% |
取余运算符 | 5 % 2 |
1 |
5 除以 2,得 2 余 1 |
** |
乘方运算符 | 5 ** 2 |
25 |
5 的 2 次方 |
用于比较两个值的关系,结果为布尔类型。
运算符 | 名称 | 示例 | 结果 |
---|---|---|---|
== |
等于运算符 | 3 == 5 |
False |
!= |
不等于运算符 | 3 != 5 |
True |
> |
大于运算符 | 5 > 3 |
True |
< |
小于运算符 | 5 < 2 |
False |
>= |
大于或等于运算符 | 5 >= 5 |
True |
<= |
小于或等于运算符 | 5 <= 2 |
False |
用于组合多个布尔值。
运算符 | 名称 | 示例 | 结果 | 说明 |
---|---|---|---|---|
and | 逻辑与运算符 | True and False |
False |
全部为 True 时结果为 True ,否则结果为 False |
or | 逻辑或运算符 | True or False |
True |
全部为 False 时结果为 False ,否则结果为 True |
not | 逻辑非运算符 | not False |
True |
将一个布尔值反转 |
位运算用于对整数进行二进制操作。
运算符 | 名称 | 示例 | 结果 | 说明 |
---|---|---|---|---|
& |
位与运算符 | 0b1100 & 0b0110 |
0b0100 |
按二进制位进行计算,两个数在某一位上都是 1 ,则结果在该位为 1 ,否则结果在该位为 0 |
\| |
位或运算符 | 0b1100 \| 0b0110 |
0b1110 |
按二进制位进行计算,两个数在某一位上都是 0 ,则结果在该位为 0 ,否则结果在该位为 1 |
^ |
异或运算符 | 0b1100 ^ 0b0110 |
0b1010 |
二进制中不同的位结果为 1 ,相同的位结果位 0 |
<< |
左移运算符 | 0b0011 << 2 |
0b1100 |
二进制位向左移动,右侧补 0 |
>> |
右移运算符 | 0b1100 >> 1 |
0b0110 |
二进制位向右移动,左侧补 0 |
~ |
取反运算符 | ~0b1100 |
0b0011 |
二进制位取反,即 1 变为 0 ,0 变为 1 |
运算符存在优先级,和数学一样先乘除,后加减。例如 \(3 + 5 * 2\) 结果为 \(13\)。
括号为最高优先级,可以使用括号改变计算顺序。例如 \((3 + 5) * 2\) 结果为 \(16\)。
下表为优先级列表,优先级由高到低:
参考:Python 官方文档
运算符 | 说明 | 优先级 |
---|---|---|
(exp) , [exp] , {exp} |
括号表达式 | 最高 |
arr[i] , arr[i:j] , func(args) , obj.attr |
索引,切片,调用,访问 | |
await exp |
await 表达式 | |
** |
乘方 | |
+num , -num , ~num |
正号、负号、取反 | |
* , @ , / , // , % |
乘除运算 | |
+ , - |
加减运算 | |
<< , >> |
移位运算 | |
& |
位与 | |
^ |
异或 | |
\| |
位或 | |
in , not in , is , is not , < , <= , > , >= , != , == |
判断比较 | |
not exp |
逻辑非 | |
and |
逻辑与 | |
or |
逻辑或 | |
if – else |
条件表达式 | |
lambda |
lambda 表达式 | |
:= |
赋值 | 最低 |
请实现计算圆形的周长和面积。
圆的周长公式为 \(C = 2 \pi r\)
圆的面积公式为 \(S = \pi r^2\)