1. 运算符与表达式基础概念
在编程语言中,运算符和表达式就像数学中的加减乘除符号和公式一样,是构建程序逻辑的基础砖块。我第一次真正理解它们的重要性是在调试一个财务计算程序时,因为运算符优先级问题导致整个报表出现系统性误差。
表达式由操作数和运算符组成,就像"2+3"这样简单的结构。但实际开发中,我们会遇到各种复杂情况:
- 算术表达式:处理数值计算
- 关系表达式:进行条件判断
- 逻辑表达式:组合多个条件
- 位运算表达式:底层数据操作
新手常见误区是把赋值运算符"="和数学中的等号混淆,这在条件判断时会导致灾难性后果。我曾在代码审查中发现过if(a=1)这样的错误,它会永远返回true。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 运算符类型深度解析
2.1 算术运算符实战
加减乘除这些基本运算符看似简单,但实际使用中有很多细节需要注意。以除法为例:
python复制# 整数除法 vs 浮点除法
print(5/2) # 2.5 (Python3真除法)
print(5//2) # 2 (地板除)
我在金融项目中就踩过坑:当处理货币计算时,必须明确使用decimal模块而非浮点数,否则会出现精度问题:
python复制from decimal import Decimal
price = Decimal('0.1') + Decimal('0.2') # 正确做法
2.2 关系运算符的陷阱
比较运算符(>, <, ==等)在条件判断中无处不在,但有些边界情况需要特别注意:
- 浮点数比较不能直接用==
- 字符串比较基于Unicode编码
- None值的特殊处理
python复制# 安全比较浮点数
def float_equal(a, b, epsilon=1e-9):
return abs(a - b) < epsilon
2.3 逻辑运算符的短路特性
and/or运算符具有短路特性,这个特性可以被巧妙利用:
python复制# 安全访问嵌套字典
value = data.get('user', {}).get('address', {}).get('street')
# 等价于
value = data and data['user'] and data['user']['
