前置知识: Python

基础数据类型

00:00
4 min Beginner

数值、字符串、布尔类型与类型转换。

1. 数字 (Numbers)

Python 3 提供了三种数值类型:

  • int (整型): 任意精度整数,在 Python 3 中不再有 long 类型。
  • float (浮点型): 双精度浮点数(64位)。
  • complex (复数): 形如 3 + 4j,其中 j 表示虚数单位。

1.1 整数类型

1.1.1 整数表示

 # 十进制整数
 x = 123
 # 二进制整数(以 0b 或 0B 开头)
 y = 0b1010 # 10
 # 八进制整数(以 0o 或 0O 开头)
 z = 0o123 # 83
 # 十六进制整数(以 0x 或 0X 开头)
 p = 0x1A # 26

1.1.2 整数操作

 # 基本算术运算
 addition = 10 + 5 # 15
 subtraction = 10 - 5 # 5
 multiplication = 10 * 5 # 50
 division = 10 / 5 # 2.0(总是返回浮点数)
 floor_division = 10 // 3 # 3(整除,向下取整)
 modulo = 10 % 3 # 1(取模/余数)
 power = 2 ** 3 # 8(幂运算)
 # 复合赋值运算符
 x = 10
 x += 5 # x = x + 5 → 15
 x -= 3 # x = x - 3 → 12
 x *= 2 # x = x * 2 → 24
 x /= 4 # x = x / 4 → 6.0
 x //= 2 # x = x // 2 → 3.0(注意:结果是浮点数)

1.2 浮点数类型

1.2.1 浮点数表示

 # 普通浮点数
 pi = 3.14159
 # 科学记数法
 avogadro = 6.022e23 # 6.022 × 10²³
 small = 1.23e-4 # 1.23 × 10⁻⁴

1.2.2 浮点数操作

 # 基本算术运算
 f1 = 3.14 + 2.71 # 5.85
 f2 = 10.0 - 3.5 # 6.5
 f3 = 2.5 * 4.0 # 10.0
 f4 = 10.0 / 3.0 # 3.3333333333333335
 # 浮点数精度问题
 0.1 + 0.2 # 0.30000000000000004(注意:浮点数精度限制)

1.3 复数类型

 # 复数定义
 c1 = 3 + 4j
 c2 = complex(2, 5) # 2 + 5j
 # 复数运算
 c3 = c1 + c2 # 5 + 9j
 c4 = c1 * c2 # (3*2 - 4*5) + (3*5 + 4*2)j → -14 + 23j
 # 复数属性
 print(c1.real) # 3.0(实部)
 print(c1.imag) # 4.0(虚部)
 print(c1.conjugate()) # 3 - 4j(共轭复数)

1.4 数学函数

Python 提供了 math 模块来支持更复杂的数学运算:

 import math
 # 基本数学函数
 print(math.pi) # π ≈ 3.141592653589793
 print(math.e) # e ≈ 2.718281828459045
 # 三角函数
 print(math.sin(math.pi/2)) # sin(π/2) = 1.0
 print(math.cos(math.pi)) # cos(π) = -1.0
 # 指数和对数
 print(math.exp(1)) # e¹ ≈ 2.71828
 print(math.log(math.e)) # ln(e) = 1.0
 print(math.log10(100)) # log₁₀(100) = 2.0
 # 取整函数
 print(math.floor(3.9)) # 3(向下取整)
 print(math.ceil(3.1)) # 4(向上取整)
 print(round(3.5)) # 4(四舍五入)
 # 其他函数
 print(math.sqrt(16)) # 4.0(平方根)
 print(math.factorial(5)) # 120(阶乘)

2. 字符串 (Strings - str)

字符串是不可变的序列类型,用于存储 Unicode 字符。

2.1 字符串定义

 # 单引号字符串
 s1 = 'Hello, World!'
 # 双引号字符串
 s2 = "Hello, World!"
 # 三引号字符串(支持多行)
 s3 = '''Hello,
 World!'''
 # 原始字符串(不转义)
 s4 = r'C:\\path\\to\\file' # 输出: C:\path\to\file
 # 字节字符串(Python 3)
 s5 = b'Hello' # 字节字符串,类型为 bytes

2.2 字符串操作

2.2.1 字符串拼接

 # 使用 + 运算符
 first_name = "Alice"
 last_name = "Smith"
 full_name = first_name + " " + last_name # "Alice Smith"
 # 使用 * 运算符重复
 print("Hello" * 3) # "HelloHelloHello"
 # 使用 f-string(Python 3.6+)
 age = 30
 message = f"My name is {full_name} and I am {age} years old."

2.2.2 字符串切片

字符串切片使用 s[start:stop:step] 语法:

 s = "Hello, World!"
 # 获取单个字符
 print(s[0]) # 'H'
 print(s[-1]) # '!'
 # 切片操作
 print(s[0:5]) # 'Hello'(从索引 0 到 4)
 print(s[7:]) # 'World!'(从索引 7 到末尾)
 print(s[:5]) # 'Hello'(从开头到索引 4)
 print(s[::2]) # 'Hlo ol!'(步长为 2)
 print(s[::-1]) # '!dlroW ,olleH'(反转字符串)

2.2.3 字符串方法

Python 提供了丰富的字符串方法:

 s = "Hello, World!"
 # 大小写转换
 print(s.upper()) # 'HELLO, WORLD!'
 print(s.lower()) # 'hello, world!'
 print(s.title()) # 'Hello, World!'
 print(s.capitalize()) # 'Hello, world!'
 # 查找和替换
 print(s.find("World")) # 7(首次出现的索引)
 print(s.replace("World", "Python")) # 'Hello, Python!'
 # 分割和连接
 print(s.split(", ")) # ['Hello', 'World!']
 print(", ".join(["Hello", "Python"])) # 'Hello, Python'
 # 去除空白
 print(" Hello ".strip()) # 'Hello'
 print(" Hello ".lstrip()) # 'Hello '
 print(" Hello ".rstrip()) # ' Hello'
 # 检查方法
 print(s.startswith("Hello")) #
 print(s.endswith("!")) #
 print(s.isalpha()) # False(包含非字母字符)
 print("123".isdigit()) #
 print("Hello123".isalnum()) #

2.3 字符串格式化

Python 提供了多种字符串格式化方法:

2.3.1 f-string(推荐,Python 3.6+)

 name = "Alice"
 age = 30
 # 基本用法
 print(f"My name is {name} and I am {age} years old.")
 # 表达式
 print(f"Next year I will be {age + 1} years old.")
 # 格式化选项
 pi = 3.14159
 print(f"Pi is approximately {pi:.2f}") # 3.14
 print(f"Age: {age:03d}") # 030
 print(f"Name: {name:>10}") # ' Alice'
 print(f"Name: {name:<10}") # 'Alice '
 print(f"Name: {name:^10}") # ' Alice '

2.3.2 format() 方法

 # 基本用法
 print("My name is {} and I am {} years old.".format(name, age))
 # 位置参数
 print("{0} {1}".format("Hello", "World")) # 'Hello World'
 print("{1} {0}".format("Hello", "World")) # 'World Hello'
 # 关键字参数
 print("My name is {name} and I am {age} years old.".format(name="Bob", age=25))
 # 格式化选项
 print("Pi is approximately {:.2f}".format(pi)) # 3.14

2.3.3 % 运算符

 # 基本用法
 print("My name is %s and I am %d years old." % (name, age))
 # 格式化选项
 print("Pi is approximately %.2f" % pi) # 3.14
 print("Age: %03d" % age) # 030
 print("Name: %10s" % name) # ' Alice'

3. 布尔 (Booleans - bool)

布尔类型只有两个值:“和False

3.1 布尔运算

 # 逻辑运算符
 print( and False) # False
 print( or False) #
 print(not True) # False
 # 比较运算符
 print(5 > 3) #
 print(5 == 3) # False
 print(5 != 3) #
 print(5 >= 3) #
 print(5 <= 3) # False

3.2 布尔上下文

在 Python 中,所有对象都可以在布尔上下文中使用(如 if 语句):

 # 布尔上下文中的评估
 if "Hello":
  print("非空字符串为真")
 if [1, 2, 3]:
  print("非空列表为真")
 if 0:
  print("0 为假")
 else:
  print("0 为假")
 if None:
  print("None 为假")
 else:
  print("None 为假")

3.3 Falsy 值

以下值在布尔上下文中被视为 False

  • None
  • False
  • 数字:0, 0.0, 0j(复数)
  • 序列和集合:""(空字符串), [](空列表), ()(空元组), {}(空字典), set()(空集合) 所有其他值都被视为 “。

4. 空值 (NoneType - None)

None 是 Python 中的特殊值,表示「无」或「空」。

4.1 基本用法

 # 赋值
 x = None
 print(x) # None
 # 函数默认参数
 def greet(name=None):
  if name is None:
  print("Hello, Guest!")
  else:
  print(f"Hello, {name}!")
 greet() # Hello, Guest!
 greet("Alice") # Hello, Alice!
 # 函数返回值(如果没有显式返回值)
 def no_return():
  pass
 print(no_return()) # None

4.2 注意事项

 # None 不等于 0、False 或空字符串
 print(None == 0) # False
 print(None == False) # False
 print(None == "") # False
 # 使用 is 运算符检查 None(推荐)
 x = None
 print(x is None) #
 print(x is not None) # False

5. 类型转换 (Type Casting)

Python 提供了内置函数来进行类型转换:

5.1 基本类型转换

 # 转换为整数
 print(int("123")) # 123
 print(int(3.9)) # 3(向下取整)
 print(int(True)) # 1
 print(int(False)) # 0
 # 转换为浮点数
 print(float("3.14")) # 3.14
 print(float(10)) # 10.0
 print(float(True)) # 1.0
 # 转换为字符串
 print(str(123)) # "123"
 print(str(3.14)) # "3.14"
 print(str(True)) # ""
 print(str(None)) # "None"
 # 转换为布尔值
 print(bool(1)) #
 print(bool(0)) # False
 print(bool("Hello")) #
 print(bool("")) # False
 print(bool([])) # False
 print(bool(None)) # False

5.2 高级类型转换

 # 转换为列表
 print(list("Hello")) # ['H', 'e', 'l', 'l', 'o']
 print(list((1, 2, 3))) # [1, 2, 3]
 # 转换为元组
 print(tuple([1, 2, 3])) # (1, 2, 3)
 print(tuple("Hello")) # ('H', 'e', 'l', 'l', 'o')
 # 转换为集合
 print(set([1, 2, 3, 2, 1])) # {1, 2, 3}(去重)
 # 转换为字典
 print(dict([("a", 1), ("b", 2)])) # {'a': 1, 'b': 2}

6. 类型检查

使用 type() 函数检查对象类型

 print(type(42)) # <class 'int'>
 print(type(3.14)) # <class 'float'>
 print(type("Hello")) # <class 'str'>
 print(type(True)) # <class 'bool'>
 print(type(None)) # <class 'NoneType'>
 print(type([1, 2, 3])) # <class 'list'>
 print(type((1, 2, 3))) # <class 'tuple'>
 print(type({"a": 1})) # <class 'dict'>
 # 使用 isinstance() 检查类型
 print(isinstance(42, int)) #
 print(isinstance(3.14, float)) #
 print(isinstance("Hello", str)) #
 print(isinstance([1, 2, 3], list)) #
 # 检查是否为多种类型之一
 print(isinstance(42, (int, float))) #

7. 最佳实践

7.1 数字类型

  • 整数:使用 int 类型存储整数,Python 会自动处理整数
  • 浮点数注意数精问题,如需精确计算,考虑使用 decimal 模块
  • 复数:仅在需要时使用复数类型

7.2 字符串

  • 定义:优先使用引号或双引号,字符串使用三引号。
  • 式化:优先使用 f-string(Python 3.6+),它更简洁易读。
  • 操作字符串是不可变的,频繁修改字符串会创建新对象,考虑使用 listio.StringIO

7.3 布尔和 None

  • 布尔直接使用布尔值,避免使用 == == False
  • None:使用 is Noneis not None 检查 None ,而不是 == None

7.4 类型转换

  • 安全转换:在转换检查值是否有效,避免运行时错误
  • 显式转换:当类型不明确时,使用显式类型转换代码可读性。

更新日志 (Changelog)

  • 2026-04-05: 细化 Python 基本数据类型及常用操作
  • 2026-04-05: 扩写内容增加详细的数类型操作字符串方法、布尔运算、None 使用场景、类型转换和最佳实践内容

知识检测

学习进度

-- 已学文档
--% 知识覆盖率

学习推荐

专注模式