【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

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

python 复制代码
# 整数和浮点数:无需声明类型
count = 100       # 这是一个 int
price = 29.99     # 这是一个 float

# 字符串:只有一种不可变字符串
greeting = "Hello, world!"
name = "Alice"
name = name + " Smith"  # 创建了一个新的字符串对象

集合与可选值

Rust

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

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 给你便利,但隐藏了细节。

相关推荐
北风toto7 分钟前
扩展操作码技术 · 详细笔记
运维·服务器·笔记·软件设计师
zLLM_Lab21 分钟前
不装 Python/PyTorch:8.1 MB Rust 程序在 MacBook Air M5 跑多模态大模型
rust
2601_9669496530 分钟前
实时行情中的成交量 Volume 到底是什么?包含盘中撤单量吗?从交易数据语义到 QuantDash 实战解析
开发语言·人工智能·python·量化·quantdash·量化数据源
you鬰38 分钟前
datawhale--llm-algo-leetcode9️⃣ SFT Training Loop
python·datawhale
叫我:松哥1 小时前
基于flask仿小米商城管理系统,使用flask开的一个商场网站
数据库·后端·python·flask
Z5998178411 小时前
c#软件开发学习笔记--WPF(Canvas、数据绑定、MVVM模式、值转换器)
笔记·学习·c#
茯苓gao1 小时前
从零开发 EtherCAT 主站(六):SOEM 初始化流程详解,主站是如何发现所有从站的?
笔记·嵌入式硬件·学习·信息与通信
智购科技无人售货机工厂1 小时前
2026自动售货机防拆机物理安全设计:从安全螺丝到结构互锁的工程实践~YH
android·网络·驱动开发·python·单片机·安全·云原生
2401_868534781 小时前
校园网规划与设计
python·pygame
老当益壮梁奶奶1 小时前
Linux软件编程学习笔记(九):消息队列、共享内存与信号灯详解
linux·c语言·笔记·学习