表达式、数值与运算
这篇是 Python 主线里最基础的一页。目标不是把所有运算符背一遍,而是先建立几个稳定印象:
- Python 里常用的数值类型是什么
+ - * / // % **到底分别代表什么- 哪些地方很容易写对语法、写错结果
常见数值类型
a = 10 # int
b = 3.14 # float
c = 2 + 3j # complex
日常开发里,最常碰到的是 int 和 float。
基本运算符
print(10 + 3) # 13
print(10 - 3) # 7
print(10 * 3) # 30
print(10 / 3) # 3.3333333333333335
print(10 // 3) # 3
print(10 % 3) # 1
print(10 ** 3) # 1000
我最常提醒自己的三个区别
/:真除法,结果通常是浮点数//:整除,直接保留商的整数部分%:取余
运算优先级
和大多数语言一样,乘除优先于加减;不确定时直接加括号。
result = 2 + 3 * 4 # 14
result = (2 + 3) * 4 # 20
我自己的习惯是:只要表达式稍微长一点,就主动加括号换清晰度,不跟优先级赌记忆。
比较运算与逻辑运算
print(3 > 2) # True
print(3 == 2) # False
print(3 > 2 and 5 > 1) # True
print(3 > 2 or 5 < 1) # True
print(not (3 > 2)) # False
这里最容易混的是:
=是赋值==才是判断是否相等
常见内置运算函数
print(abs(-10)) # 10
print(round(3.14159, 2)) # 3.14
print(pow(2, 5)) # 32
print(divmod(10, 3)) # (3, 1)
如果只是做基础数学运算,内置函数已经很够用;更系统一点的数学函数可以看 math 模块。
math 模块里常用的几项
import math
print(math.sqrt(16)) # 4.0
print(math.floor(3.8)) # 3
print(math.ceil(3.2)) # 4
print(math.pi) # 3.141592653589793
浮点数不要想得太理想
初学时很容易觉得 0.1 + 0.2 应该严格等于 0.3,但浮点数不是这么工作的:
print(0.1 + 0.2) # 0.30000000000000004
print(0.1 + 0.2 == 0.3) # False
比较浮点数时,更稳妥的方式是看差值是否足够小:
print(abs((0.1 + 0.2) - 0.3) < 1e-9)