page contents

别再纠结Python2和Python3了,这些新特性你用上了吗

说真的,一提到Python版本,很多人还在纠结2还是3。这个事情都过去这么多年了,真没必要再耗精力。Python 2在2020年就停止维护,再抱着它不放,等于给自己挖坑。

attachments-2026-08-yKg7BhUg6a71433b96b02.png说真的,一提到Python版本,很多人还在纠结2还是3。这个事情都过去这么多年了,真没必要再耗精力。Python 2在2020年就停止维护,再抱着它不放,等于给自己挖坑。

很多老项目还在用Python 2,这个能理解。但新项目还选Python 2,说不过去。Python 3从3.6开始就非常稳定了。关键是,新版本里加了不少好东西,用上真能省不少事。

f-string 格式化,告别 % 和 .format()

以前写字符串拼接,要么用 %s 占位,要么用 .format()。代码一多,参数位置对不上,眼都花了。f-string 直接在字符串里写变量,简单粗暴。

name = '张三'; print(f'你好,{name}') 这么写,一眼就明白。还能在花括号里做运算,print(f'结果:{a + b}'),不用再搞一堆临时变量。

类型提示 type hints,让代码更好懂

Python是动态语言,写起来快,但看代码容易发懵。一个函数返回什么,参数是什么类型,光看名字猜不准。类型提示 不是强制约束,是给人看的。

def add(x: int, y: int) -> int: return x + y 这么写,后来的人一看就知道x和y是整数,返回也是整数。配合编辑器,写代码还能自动补全,错误少很多。

数据结构增强,字典保持有序

在Python 3.6之前,字典里的键值对顺序是不固定的。你插入的顺序和取出来的顺序可能不一样,这招很坑人。从Python 3.7开始,字典默认保持插入顺序。这在处理配置文件,解析JSON数据时特别有用。

还有 dataclass,写数据类不用再手写__init__。一行装饰器搞定。差不多就是 @dataclass class Person: name: str; age: int 这样。省去大量重复代码。

异步编程 asyncio,处理I/O不再卡

搞爬虫或者Web服务的时候,网络请求经常卡住。以前的解决办法是多线程,但线程多了容易出问题。Python 3.5以后,asyncio 成了内置库。它用单线程处理并发,特别适合I/O密集型的任务。

写代码的时候用 async def 定义函数,用 await 调用。看起来像同步代码,实际在等网络回复时会切到其他任务,不浪费CPU。以前用多线程的代码,换成这个,资源消耗小多了。

海象运算符 := 赋值又取值

有时候需要先赋值,再用这个值做判断。以前得写两行,比如 value = get_data(); if value... 现在用 :=  一行搞定。不仅能用在if里,还能在while循环中用。比如 while chunk := file.read(1024): process(chunk),这样读文件就不用先读再检查长度了。

回头看看,这些特性都在Python 3.6到3.10之间加入的。马上Python 3.12都来了,还停留在2.x版本,确实有点说不过去。迁移过来,把这些语法用上,代码能短一大截,可读性也提升。

刚上手不妨从f-string和类型提示开始,这两个最直观。慢慢再试试dataclass和asyncio。用习惯之后,回头再看老代码,会发现到处都是可以改进的地方。

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

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

attachments-2022-05-rLS4AIF8628ee5f3b7e12.jpg

 

  • 发表于 2026-08-04 09:41
  • 阅读 ( 23 )
  • 分类:Python开发

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
Pack
Pack

2307 篇文章

作家榜 »

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