1. 标识符

  • 命名规则
    • 由字母(AZ, az)、数字(0~9)和下划线(_)组成。
    • 不能以数字开头
    • 区分大小写(如 Namename 不同)。
    • 不能与保留字(关键字)重名。
  • 命名规范(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 = 5x = "text" 是合法的)。

4. 基本数据类型

4.1 数字型 (Numeric)

4.1.1 整数型 (int)

  • 任意大小的整数(仅受内存限制)。
  • 支持多种进制表示:
    • 十进制:123, -456
    • 二进制:0b1010(前缀 0b0B
    • 八进制:0o177(前缀 0o0O
    • 十六进制:0x1F(前缀 0x0X
  • 进制转换函数: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 + bja + bJ,其中 a 为实部,b 为虚部(均为浮点数)。
  • 可通过 realimag 属性获取实部和虚部(均为 float 类型)。
  • 示例:
    1
    2
    3
    c = 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)

  • 只有两个值:TrueFalse(注意首字母大写)。
  • 布尔值实际上是 int 的子类,True 对应整数 1False 对应 0,可参与算术运算(但通常不推荐)。
  • 在条件判断中,以下值会被视为 FalseNoneFalse、数值零(0, 0.0, 0j)、空序列("", [], (), {}, set())等。

4.4 type() 函数与类型检查

  • type(obj) 返回对象 obj 的数据类型(如 <class 'int'>)。
  • 更推荐使用 isinstance(obj, type) 进行类型检查,因其支持继承关系。
    1
    2
    isinstance(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") 会抛出 ValueErrorint("abc") 同样报错。
  • 隐式类型转换:混合类型运算时,Python 自动提升为更高级类型(如 int + floatfloat)。

字符编码相关函数chr(x) 返回 Unicode 编码 x 对应的单字符;ord(x) 返回单字符 x 的 Unicode 编码(整数)。二者互为逆操作。


5. 运算符

5.1 基本算术运算符

运算符 功能 示例
+ 加法 3 + 25
- 减法 3 - 21
* 乘法 3 * 26
/ 真除法(结果浮点数) 3 / 21.5
// 整除(向下取整) 3 // 21-3 // 2-2
% 取余(模运算) 3 % 21-3 % 21(与除数同号)
** 幂运算 2 ** 389 ** 0.53.0

注意/// 的区别;取余结果的符号由除数决定。

5.2 字符串运算符

  • +:字符串拼接,例如 "Hello" + " " + "World""Hello World"
  • *:重复复制,例如 "Hi" * 3"HiHiHi"
  • in / not in:成员判断,检查子串是否存在于字符串中,返回布尔值。
  • 字符串也支持 ==!=><>=<= 等比较运算符,按字典序(Unicode码点)逐字符比较。

5.3 赋值运算符与增强赋值运算符

  • 基本赋值:=
  • 增强赋值(将算术运算与赋值结合):
    +=-=*=/=//=%=**=
  • 示例:x += 3 等价于 x = x + 3
  • 增强赋值会原地修改可变对象(如列表),但对不可变对象(如数字、字符串)会创建新对象。

5.4 关系运算符(比较运算符)

  • 包括:==(等于)、!=(不等于)、><>=<=
  • 返回布尔值 TrueFalse
  • 支持链式比较:a < b <= c 等价于 a < b and b <= c,代码更简洁。
  • 不同类型之间比较时,Python 会尝试进行合理比较(如数字与数字),否则可能引发 TypeError

5.5 逻辑运算符

  • andornot
  • 操作数不限于布尔值,Python 会将其隐式转换为布尔值进行判断,但返回的是最后一个被求值的操作数(短路求值)。
    • x and y:若 x 为假则返回 x,否则返回 y
    • x or y:若 x 为真则返回 x,否则返回 y
    • not x:返回布尔值,始终为 TrueFalse
  • 优先级not > and > or(可用括号调整)。

5.6 运算符优先级(从高到低简要)

  1. 圆括号 ()
  2. 幂运算 **
  3. 正负号 +x, -x
  4. 乘除、取余、整除 *, /, //, %
  5. 加减 +, -
  6. 比较运算符 ==, !=, >, <, >=, <=
  7. 逻辑非 not
  8. 逻辑与 and
  9. 逻辑或 or
  10. 赋值运算符(最低)

建议在复杂表达式中使用括号增强可读性,避免依赖优先级记忆。


6. input() 函数的使用

  • 功能:从标准输入读取一行文本,以字符串形式返回(不包含末尾换行符)。
  • 语法:input([提示信息]),提示信息为可选字符串。
  • 重要input() 始终返回字符串类型,即使输入数字。
  • 类型转换:
    • 安全做法:使用 int()float() 等显式转换,并配合 try-except 处理无效输入。
    • 示例:
      1
      2
      3
      4
      5
      6
      try:
      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
    3
    print("111", end="")    # 结尾为空字符串
    print("222", end="") # 输出:111222(无换行)
    print("333", end=" ") # 输出:333 (末尾加空格,不换行)
  • sep 参数:控制多个输出项之间的分隔符,默认为空格。
    1
    print("a", "b", "c", sep="-")   # 输出:a-b-c