当前位置: 首页 > java >正文

【Python基础】 15 Rust 与 Python 基本类型对比笔记

一、核心哲学差异

特性Rust 🦀Python 🐍
类型系统静态、强类型。编译时必须确定所有类型。动态、强类型。运行时确定类型。
内存管理编译时所有权系统运行时垃圾回收 (GC)
** 数值精度 **** 精确控制**。有多种固定位数的整数和浮点数类型。抽象简化。通常使用一种通用整数和一种通用浮点数。
**核心目标 **性能、安全、零成本抽象开发效率、简洁性、易用性

二、基本类型详细对比

数值类型
类型Rust 🦀Python 🐍
整数i8, u8, i16, u16, i32, u32, i64, u64, i128, u128, isize, usizeint (无限精度)
浮点数f32, f64float (通常为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 给你便利,但隐藏了细节。

http://www.xdnf.cn/news/20031.html

相关文章:

  • C# 修改基类List中某一元素的子类类型
  • 11 月广州见!AUTO TECH China 2025 汽车内外饰展,解锁行业新趋势
  • Leetcode—3516. 找到最近的人【简单】
  • ORA-12547: TNS:lost contact
  • 算法模板(Java版)_字符串、并查集和堆
  • matlab版本粒子群算法(PSO)在路径规划中的应用
  • PDF批量加盖电子骑缝章的方法!高效办公必备
  • 每天学习一点点之湿敏等级以及肖特基二极管
  • C#之LINQ
  • wps的excel如何转为谷歌在线表格
  • testng.xml
  • Opencv: cv::LUT()深入解析图像块快速查表变换
  • sqlserver2008导入excel表数据遇到的问题
  • 无线路由器:从家庭上网到智慧互联的核心设备
  • 人工智能学习:LR和SVM的联系与区别?
  • AI助力软件UI概念设计:卓伊凡收到的客户设计图引发的思考
  • Node.js轻松生成动态二维码
  • C++对象模型的底层逻辑
  • 【数据分享】土地利用矢量shp数据分享-福建
  • 从关键词到语义理解:小陌引擎如何重构AI搜索优化逻辑?
  • Android 12 在 Rockchip 平台上的分区表parametet.txt 自动生成机制解析
  • 【单片机day03】
  • vue3存储/获取本地或会话存储,封装存储工具,结合pina使用存储
  • 电子病历空缺句的语言学特征描述与自动分类探析(以GPT-5为例)(下)
  • LLM重排器落地难题:如何破解速度与精度的工程困局?
  • Claude Code Router实现默认回复中文回复
  • 轻量级的磁盘碎片整理程序-开箱急用快速清理磁盘垃圾和碎片-供大家学习研究参考
  • Redis 客户端与服务器:银行的 “客户服务系统” 全流程
  • LeetCode 面试经典 150_矩阵_螺旋矩阵(35_54_C++_中等)(按层模拟)
  • K8S容器POD内存快照导出分析处理方案