Python基础-15-Rust-与-Python-基本类型对比笔记
目录
【Python基础】 15 Rust 与 Python 基本类型对比笔记
一、核心哲学差异
特性 | Rust 🦀 | Python 🐍 |
---|---|---|
类型系统 | 静态、强类型。编译时必须确定所有类型。 | 动态、强类型。运行时确定类型。 |
内存管理 | 编译时所有权系统。 | 运行时垃圾回收 (GC)。 |
** 数值精度 ** | ** 精确控制**。有多种固定位数的整数和浮点数类型。 | 抽象简化。通常使用一种通用整数和一种通用浮点数。 |
**核心目标 ** | 性能、安全、零成本抽象。 | 开发效率、简洁性、易用性。 |
二、基本类型详细对比
数值类型
类型 | Rust 🦀 | Python 🐍 |
---|---|---|
整数 | i8 , u8 , i16 , u16 , i32 , u32 , i64 , u64 , i128 , u128 , isize , usize | int (无限精度) |
浮点数 | f32 , f64 | float (通常为64位) |
布尔值 | bool (true /false ) | bool (True /False ) |
文本类型
类型 | Rust 🦀 | Python 🐍 |
---|---|---|
字符 | char (4字节Unicode) | N/A (长度1的字符串) |
字符串 | &str (切片), String (可变) | str (不可变Unicode) |
集合类型
类型 | Rust 🦀 | Python 🐍 |
---|---|---|
序列/列表 | Vec<T> | list |
元组 | (T1, T2, ...) | tuple |
映射/字典 | HashMap<K, V> | dict |
集合 | HashSet<T> | set |
其他重要类型
类型 | Rust 🦀 | Python 🐍 |
---|---|---|
空类型 | () (单元类型) | NoneType (None ) |
可选值 | Option<T> (Some /None ) | N/A (用 None 约定) |
错误处理 | Result<T, E> (Ok /Err ) | 异常机制 (try /except ) |
三、内存与行为对比
方面 | Rust 🦀 | Python 🐍 |
---|---|---|
赋值语义 | 移动语义为主 | 赋值即引用 |
可变性 | 显式声明 (mut ) | 隐式可变 |
类型转换 | 显式转换 使用 as | 隐式转换 |
四、示例代码对比
数值与字符串
Rust
// 整数:必须指定类型或由编译器推断
let count: u32 = 100;
let price = 29.99; // 编译器推断为 f64
// 字符串:区分 &str 和 String
let greeting: &str = "Hello, world!"; // 不可变视图
let mut name = String::from("Alice"); // 可变,拥有的字符串
name.push_str(" Smith");
Python
# 整数和浮点数:无需声明类型
count = 100 # 这是一个 int
price = 29.99 # 这是一个 float
# 字符串:只有一种不可变字符串
greeting = "Hello, world!"
name = "Alice"
name = name + " Smith" # 创建了一个新的字符串对象
集合与可选值
Rust
// Vec 必须声明元素类型
let numbers: Vec<i32> = vec![1, 2, 3];
numbers.push(4);
// Option 强制处理Some和None
let maybe_number: Option<i32> = Some(5);
// let maybe_number: Option<i32> = None;
if let Some(num) = maybe_number {
println!("The number is: {}", num);
} else {
println!("There is no number");
}
// 也可以使用 match 或 .unwrap() (不推荐安全代码中使用)
Python
# List 可以包含任何类型
numbers = [1, 2, 3]
numbers.append(4)
# 使用 None 表示可选值,但需要手动检查
maybe_number = 5
# maybe_number = None
if maybe_number is not None:
print(f"The number is: {maybe_number}")
else:
print("There is no number")
五、总结
特性 | Rust 🦀 | Python 🐍 |
---|---|---|
核心优势 | 性能、内存安全、并发安全 | 开发速度、灵活性、易学性 |
类型风格 | 显式、精确、严格 | 隐式、通用、灵活 |
适用场景 | 系统编程、性能关键型应用 | Web开发、数据分析、机器学习 |
简单来说:Rust 给你控制权,但需要你负责;Python 给你便利,但隐藏了细节。