0

0

Python怎么进行类型转换_int, float, str强转与隐式转换

P粉602998670

P粉602998670

发布时间:2026-03-15 04:35:32

|

765人浏览过

|

来源于php中文网

原创

int()转换失败抛ValueError;应使用try/except捕获并处理,避免用int(float())掩盖精度问题。

python怎么进行类型转换_int, float, str强转与隐式转换

int() 转换失败时抛什么错?怎么安全处理?

int() 遇到无法解析的字符串(比如 "12.5""abc"、空字符串 "")会直接抛 ValueError,不是 TypeError。它只认纯整数形式的字符串(可带正负号),不接受小数点、科学计数法或空白以外的字符。

  • try/except 捕获 ValueError 是最稳妥的做法
  • 不要依赖 if isinstance(x, str) 就直接转——类型检查不能替代内容校验
  • int(float("12.5")) 看似能绕过,但会先截断再转,容易掩盖精度丢失问题
try:
    n = int(user_input)
except ValueError:
    n = 0  # 或抛自定义错误、返回 None

float() 转字符串时为啥出现 0.1 + 0.2 != 0.3?

这不是转换问题,是浮点数在二进制下无法精确表示十进制小数导致的固有误差。float("0.1") 存进去的就不是数学意义上的 0.1,后续所有运算都基于这个近似值。

  • str(0.1 + 0.2) 输出 "0.30000000000000004",是因为 Python 默认显示足够位数来区分相邻浮点数
  • 如果需要可控输出,用 f"{x:.1f}"round(x, 1),但注意 round() 也不改变底层值
  • 涉及金额等必须精确的场景,别用 float,改用 decimal.Decimal
from decimal import Decimal
Decimal("0.1") + Decimal("0.2") == Decimal("0.3")  # True

str() 转对象时调用的是 __str__ 还是 __repr__?

str(x) 优先调用 x.<strong>str</strong>();如果没定义或返回非字符串,才 fallback 到 x.<strong>repr</strong>()。但两者语义不同:<strong>str</strong> 面向用户,<strong>repr</strong> 面向开发者(最好能 eval 出原对象)。

  • 自定义类里只实现 <strong>repr</strong> 是底线,否则 str(obj) 可能返回难读的 "<<strong>main</strong>.A object at 0x...>"
  • 不要让 <strong>str</strong> 返回空字符串或纯空格,这会让日志、调试失去关键信息
  • print(x) 内部就是调 str(x),所以它的输出质量取决于你写的 <strong>str</strong>
class Point:
    def __init__(self, x, y):
        self.x, self.y = x, y
    def __str__(self):
        return f"({self.x}, {self.y})"  # 用户友好
    def __repr__(self):
        return f"Point({self.x!r}, {self.y!r})"  # 开发者友好

隐式转换在哪偷偷发生?哪些地方绝对不能依赖?

Python 的隐式转换极少,只有少数几个地方:布尔上下文(if x:)、数字混合运算(3 + 4.0float)、print() 参数自动转 str。但它不会在赋值、函数参数、比较(== 除外)、容器操作中自动强转。

阿里妈妈·创意中心
阿里妈妈·创意中心

阿里妈妈营销创意中心

下载

立即学习Python免费学习笔记(深入)”;

  • [1, 2] + "3"TypeError,不会把字符串转成列表
  • dict.get("key", 0) 中的默认值 0 不会自动转成字符串,哪怕 key 对应的是字符串
  • 1 == TrueTrue(因为 boolint 子类),但这是特例,不是通用转换规则

最容易被忽略的是:函数参数签名和类型提示(如 def f(x: int):)完全不影响运行时行为,f("123") 依然能跑,只是可能在后续计算中崩。类型检查靠 mypy,不是靠 Python 自己。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
python中print函数的用法
python中print函数的用法

python中print函数的语法是“print(value1, value2, ..., sep=' ', end=' ', file=sys.stdout, flush=False)”。本专题为大家提供print相关的文章、下载、课程内容,供大家免费下载体验。

193

2023.09.27

python print用法与作用
python print用法与作用

本专题整合了python print的用法、作用、函数功能相关内容,阅读专题下面的文章了解更多详细教程。

19

2026.02.03

css中float用法
css中float用法

css中float属性允许元素脱离文档流并沿其父元素边缘排列,用于创建并排列、对齐文本图像、浮动菜单边栏和重叠元素。想了解更多float的相关内容,可以阅读本专题下面的文章。

595

2024.04.28

C++中int、float和double的区别
C++中int、float和double的区别

本专题整合了c++中int和double的区别,阅读专题下面的文章了解更多详细内容。

108

2025.10.23

if什么意思
if什么意思

if的意思是“如果”的条件。它是一个用于引导条件语句的关键词,用于根据特定条件的真假情况来执行不同的代码块。本专题提供if什么意思的相关文章,供大家免费阅读。

847

2023.08.22

if什么意思
if什么意思

if的意思是“如果”的条件。它是一个用于引导条件语句的关键词,用于根据特定条件的真假情况来执行不同的代码块。本专题提供if什么意思的相关文章,供大家免费阅读。

847

2023.08.22

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

761

2023.08.03

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

221

2023.09.04

TypeScript类型系统进阶与大型前端项目实践
TypeScript类型系统进阶与大型前端项目实践

本专题围绕 TypeScript 在大型前端项目中的应用展开,深入讲解类型系统设计与工程化开发方法。内容包括泛型与高级类型、类型推断机制、声明文件编写、模块化结构设计以及代码规范管理。通过真实项目案例分析,帮助开发者构建类型安全、结构清晰、易维护的前端工程体系,提高团队协作效率与代码质量。

49

2026.03.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 22.5万人学习

Django 教程
Django 教程

共28课时 | 5万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号