Python 二级备考笔记(一):基础语法与数据类型
1. 标识符
- 命名规则:
- 由字母(A
Z, az)、数字(0~9)和下划线(_)组成。 - 不能以数字开头。
- 区分大小写(如
Name和name不同)。 - 不能与保留字(关键字)重名。
- 由字母(A
- 命名规范(PEP 8 建议):
- 变量名、函数名、方法名:全小写,单词间用下划线分隔(如
my_var)。 - 类名:首字母大写(驼峰命名法,如
MyClass)。 - 常量名:全大写,单词间用下划线分隔(如
MAX_SIZE)。
- 变量名、函数名、方法名:全小写,单词间用下划线分隔(如
- 合法性检查:可通过
str.isidentifier()方法判断一个字符串是否为合法标识符。
2. 保留字(关键字)
- Python 保留字不能用作标识符,否则会引发语法错误。
- 保留字列表如下(不同版本略有增减,以实际环境为准):
1
False, None, True, and, as, assert, async, await, break, class, continue, def, del, elif, else, except, finally, for, from, global, if, import, in, is, lambda, nonlocal, not, or, pass, raise, return, try, while, with, yield, match, case
- 可通过
import keyword; print(keyword.kwlist)查看当前环境的所有关键字。
3. 常量和变量
- 常量:在程序运行过程中值保持不变的量。
- 字面常量:直接写出的值,如
123、"hello"、3.14。 - 命名常量:通常用全大写变量名表示(约定,非强制),如
PI = 3.14159。
- 字面常量:直接写出的值,如
- 变量:通过赋值语句动态绑定数据类型和值。
- 赋值格式:
变量名 = 表达式(如x = 10)。 - 支持链式赋值:
a = b = c = 0。 - 支持增量赋值(增强赋值运算符,见 5.3 节)。
- 赋值格式:
- 动态类型:变量无需显式声明类型,可随时指向不同类型对象(如
x = 5后x = "text"是合法的)。
4. 基本数据类型
4.1 数字型 (Numeric)
4.1.1 整数型 (int)
- 任意大小的整数(仅受内存限制)。
- 支持多种进制表示:
- 十进制:
123,-456 - 二进制:
0b1010(前缀0b或0B) - 八进制:
0o177(前缀0o或0O) - 十六进制:
0x1F(前缀0x或0X)
- 十进制:
- 进制转换函数:
bin()、oct()、hex()分别返回二进制、八进制、十六进制字符串。
4.1.2 浮点数型 (float)
- 双精度浮点数(遵循 IEEE 754 标准),精度约为 15~17 位有效数字。
- 支持科学计数法:
1.23e-4表示 0.000123。 - 注意:浮点数运算可能存在精度误差(如
0.1 + 0.2 != 0.3),可借助decimal模块进行精确计算。
4.1.3 复数型 (complex)
- 形式:
a + bj或a + bJ,其中a为实部,b为虚部(均为浮点数)。 - 可通过
real和imag属性获取实部和虚部(均为float类型)。 - 示例:
1
2
3c = 3.1 + 4j
print(c.real) # 输出 3.1
print(c.imag) # 输出 4.0
4.2 字符串型 (str)
- 用单引号(
'...')、双引号("...")或三引号('''...'''或"""...""")括起来的字符序列。 - 三引号可用于多行字符串,保留换行格式。
- 转义字符:如
\n(换行)、\t(制表符)、\\(反斜杠)、\'(单引号)、\"(双引号)等。 - 原始字符串:在引号前加
r(如r'C:\Users'),转义字符不生效,常用于文件路径和正则表达式。 - 字符串是不可变序列:不能通过下标修改单个字符,只能生成新字符串。
4.3 布尔型 (bool)
- 只有两个值:
True和False(注意首字母大写)。 - 布尔值实际上是
int的子类,True对应整数1,False对应0,可参与算术运算(但通常不推荐)。 - 在条件判断中,以下值会被视为
False:None、False、数值零(0,0.0,0j)、空序列("",[],(),{},set())等。
4.4 type() 函数与类型检查
type(obj)返回对象obj的数据类型(如<class 'int'>)。- 更推荐使用
isinstance(obj, type)进行类型检查,因其支持继承关系。1
2isinstance(3.14, float) # True
isinstance(True, int) # True(因为 bool 是 int 的子类)
4.5 数据类型转换(显式转换)
- 常用转换函数:
int(x):将x转换为整数(支持字符串、浮点数等)。float(x):转换为浮点数。str(x):转换为字符串。bool(x):转换为布尔值。complex(real[, imag]):创建复数。
- 注意:
- 浮点数转整数时直接截断小数部分(非四舍五入)。
- 字符串转数字时,字符串必须符合数字字面量格式。
int("123")合法,int("12.3")会抛出ValueError,int("abc")同样报错。
- 隐式类型转换:混合类型运算时,Python 自动提升为更高级类型(如
int + float→float)。
字符编码相关函数:
chr(x)返回 Unicode 编码x对应的单字符;ord(x)返回单字符x的 Unicode 编码(整数)。二者互为逆操作。
5. 运算符
5.1 基本算术运算符
| 运算符 | 功能 | 示例 |
|---|---|---|
+ |
加法 | 3 + 2 → 5 |
- |
减法 | 3 - 2 → 1 |
* |
乘法 | 3 * 2 → 6 |
/ |
真除法(结果浮点数) | 3 / 2 → 1.5 |
// |
整除(向下取整) | 3 // 2 → 1;-3 // 2 → -2 |
% |
取余(模运算) | 3 % 2 → 1;-3 % 2 → 1(与除数同号) |
** |
幂运算 | 2 ** 3 → 8;9 ** 0.5 → 3.0 |
注意:
/和//的区别;取余结果的符号由除数决定。
5.2 字符串运算符
+:字符串拼接,例如"Hello" + " " + "World"→"Hello World"。*:重复复制,例如"Hi" * 3→"HiHiHi"。in/not in:成员判断,检查子串是否存在于字符串中,返回布尔值。- 字符串也支持
==、!=、>、<、>=、<=等比较运算符,按字典序(Unicode码点)逐字符比较。
5.3 赋值运算符与增强赋值运算符
- 基本赋值:
=。 - 增强赋值(将算术运算与赋值结合):
+=、-=、*=、/=、//=、%=、**=。 - 示例:
x += 3等价于x = x + 3。 - 增强赋值会原地修改可变对象(如列表),但对不可变对象(如数字、字符串)会创建新对象。
5.4 关系运算符(比较运算符)
- 包括:
==(等于)、!=(不等于)、>、<、>=、<=。 - 返回布尔值
True或False。 - 支持链式比较:
a < b <= c等价于a < b and b <= c,代码更简洁。 - 不同类型之间比较时,Python 会尝试进行合理比较(如数字与数字),否则可能引发
TypeError。
5.5 逻辑运算符
and、or、not。- 操作数不限于布尔值,Python 会将其隐式转换为布尔值进行判断,但返回的是最后一个被求值的操作数(短路求值)。
x and y:若x为假则返回x,否则返回y。x or y:若x为真则返回x,否则返回y。not x:返回布尔值,始终为True或False。
- 优先级:
not>and>or(可用括号调整)。
5.6 运算符优先级(从高到低简要)
- 圆括号
() - 幂运算
** - 正负号
+x,-x - 乘除、取余、整除
*,/,//,% - 加减
+,- - 比较运算符
==,!=,>,<,>=,<= - 逻辑非
not - 逻辑与
and - 逻辑或
or - 赋值运算符(最低)
建议在复杂表达式中使用括号增强可读性,避免依赖优先级记忆。
6. input() 函数的使用
- 功能:从标准输入读取一行文本,以字符串形式返回(不包含末尾换行符)。
- 语法:
input([提示信息]),提示信息为可选字符串。 - 重要:
input()始终返回字符串类型,即使输入数字。 - 类型转换:
- 安全做法:使用
int()、float()等显式转换,并配合try-except处理无效输入。 - 示例:
1
2
3
4
5
6try:
a = float(input("第一个数:"))
b = float(input("第二个数:"))
print(a + b)
except ValueError:
print("请输入有效数字!") - 不建议使用
eval(input()),因为eval()会执行任意表达式,存在安全风险(用户可输入恶意代码)。
- 安全做法:使用
- 多个输入可结合
split()处理,例如x, y = map(int, input().split())。
7. 输出不换行(print() 的 end 参数)
print()函数默认以换行符\n结尾。- 通过
end参数自定义结尾字符。 - 示例:
1
2
3print("111", end="") # 结尾为空字符串
print("222", end="") # 输出:111222(无换行)
print("333", end=" ") # 输出:333 (末尾加空格,不换行) sep参数:控制多个输出项之间的分隔符,默认为空格。1
print("a", "b", "c", sep="-") # 输出:a-b-c
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 七夏的树洞🐿️!





