page contents

Python2和3傻傻分不清?记住这5个关键差异,迁移老项目不踩坑

我刚工作那会接手了一个老项目,打开代码一看,print后面没有括号,input函数还能当数字用。当时就懵了,这到底是Python2还是Python3?查了半天资料,头都大了。后来踩了无数坑,才总结出这几个关键差异。

attachments-2026-05-1tkPIpfE6a02801b85b91.png我刚工作那会接手了一个老项目,打开代码一看,print后面没有括号input函数还能当数字用。当时就懵了,这到底是Python2还是Python3?查了半天资料,头都大了。后来踩了无数坑,才总结出这几个关键差异。

第一个差异就是print从语句变成了函数。Python2里直接写print “hello”就行,Python3非要写成print(“hello”)。这看起来小事,但老项目里如果有一百个print,你得挨个加括号。我有个同事没注意这个,迁移完程序直接报语法错误,排查了一下午。

第二个差异是整数的除法行为变了。Python2里5/2等于2,因为整数除法直接取整。Python3里5/2等于2.5,想取整得用5//2。有个做数据统计的同学,迁移完计算平均值,发现所有结果都变成整数了,数据全错。他找了一天才发现问题出在除法上。

第三个差异是字符串编码方式改了。Python2默认用ASCII编码,中文经常报错。Python3默认用Unicode,中文处理友好很多。但迁移时要注意,老项目里那些decode、encode方法可能都得调整。有个写爬虫的朋友,迁移后网页上的中文全变成乱码了,搞了两天才搞定编码问题。

第四个差异是input函数的返回值不同。Python2的input会把用户输入当作代码执行,比如输入1+1会返回2。Python3的input把输入全当字符串,输入1+1返回的是“1+1”这个字符串。这区别很要命,老项目里如果直接用input做数学运算,Python3下会直接报错。

第五个差异是range和xrange的关系。Python2里range返回列表,xrange返回生成器。Python3里range直接返回生成器,没有xrange了。迁移时如果老代码用了xrange,直接改成range就行。但要注意,如果代码里对range返回的列表做了切片或修改,Python3里就不能这么干了。

这些差异看着不起眼,真动手迁移的时候一个比一个坑。我建议迁移前先在项目里搜一下print、除法符号、input、xrange这些关键词,重点检查。找个简单的模块先试试水,别一上来就全量迁移。慢慢来,比回头填坑要快得多。

更多相关技术内容咨询欢迎前往并持续关注好学星城论坛了解详情。

想高效系统的学习Python编程语言,推荐大家关注一个微信公众号:Python编程学习圈。每天分享行业资讯、技术干货供大家阅读,关注即可免费领取整套Python入门到进阶的学习资料以及教程,感兴趣的小伙伴赶紧行动起来吧。

attachments-2022-05-rLS4AIF8628ee5f3b7e12.jpg

  • 发表于 2026-05-12 09:19
  • 阅读 ( 23 )
  • 分类:Python开发

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
Pack
Pack

2059 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 2228 文章
  3. Pack 2059 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章