【Python】 第二章学习心得
《聪明办法学 Python(第2版)》第二章学习心得:数据类型和操作
通过学习第二章“数据类型和操作”,我对 Python 中的基本数据类型、内置常量、运算符、以及表达式求值有了更深入的理解。这一章不仅强化了我对数据本质的认知,也让我意识到在编程时,数据类型和运算符的选择会直接影响程序的行为和逻辑表达。以下是我的学习体会和重点整理:
常见内置数据类型
Python 提供了丰富的内置数据类型,常见的包括:
- 整数(int)
- 浮点数(float)
- 布尔值(bool)
- 字符串(str)
- 列表(list)
- 元组(tuple)
- 集合(set)
- 字典(dict)
- 复数(complex)
- 函数(function)
- 模块(module)
- 类型本身(type)
示例:
1 | print(type(2)) # <class 'int'> |
特别有趣的是,Python 中“类型”本身也是一种类型,即 type,这反映了 Python 强大的面向对象设计理念。
内置常量
Python 中常见的内置常量有:
True、False:布尔类型常量None:表示空值- 数学常量(通过
math模块):math.pi:π ≈ 3.14159math.e:自然对数底 ≈ 2.71828math.tau:τ ≈ 6.28318math.inf:正无穷大
这些常数在数学运算和逻辑判断中非常常用,也大大提升了表达力。
算术运算符和整除
Python 支持多种运算符,包括:
- 算术运算:
+ - * / // % ** - 比较运算:
< <= == != >= > - 赋值运算:
+= -= *= //= %= **= - 逻辑运算:
and or not
特别需要注意:
/表示浮点除法,结果为浮点数//表示整除,会舍弃小数部分%表示取余
示例:
1 | print(5 / 3) # 1.666... |
还学习了自定义的模运算实现方式:
1 | def mod(a, b): |
运算符优先级与结合律
本章强调了表达式中不同运算符的优先级,例如:
1 | print(2 + 3 * 4) # 14,而不是 20 |
此外,Python 中运算符具有结合律(如从左到右或从右到左),这些都对表达式求值结果有重要影响。
类型影响运算语义
相同的运算符在不同类型之间的运算行为可能不同:
1 | print(3 * 2) # 6(数值乘法) |
浮点数误差
本章还介绍了浮点数的误差问题,这是由底层二进制表示方式决定的:
1 | print(0.1 + 0.1 + 0.1 == 0.3) # False |
短路求值
逻辑运算中会触发“短路求值”机制:
1 | def yes(): return True |
这对于控制逻辑流程、避免错误非常有帮助。
type() vs isinstance()
type() 用于判断数据类型,但更推荐使用 isinstance() 来判断一个对象是否属于某个类或其子类:
1 | import numbers |
总结
通过本章学习,我掌握了 Python 常见的数据类型与内置运算符,理解了它们的行为及差异。在今后的编程中,我将更加注意:
- 使用正确的类型与运算符组合
- 利用
isinstance()实现更健壮的类型判断 - 理解表达式求值的过程与短路机制
- 留意浮点数计算的精度问题
这为我编写更高效、可靠的 Python 程序奠定了坚实的基础。