前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【文末送书】2024年终于可以放心使用的python新特性

【文末送书】2024年终于可以放心使用的python新特性

作者头像
咋咋
发布2024-03-04 15:11:21
4900
发布2024-03-04 15:11:21
举报
文章被收录于专栏:数据大宇宙

前言

以前写 python 的时候,需要考虑到实际运行环境上的 python 版本,或者本身脚本是给别人调用,害怕突然就报一个 'xxt方法不存在' 的错误。不过,最近我看到像 numpy 这些出名库的最新版本,已经最低要求支持python 3.9 了,看来有些"新特性"终于可以放心使用。

今天就来盘点好用新特性。


打印变量真香

print 函数绝对是我们最熟悉的"朋友",有时候一些小问题就顺手用 print 函数打印一下变量的值。以往都是要这样子写:

糟心!其实我在很久以前就看到关于格式字符串输出变量的特性。

  • 只需在变量后加一个等号即可

真香!

这不仅仅只是把变量打印出来,而是表达式代码给打印出来,并且还支持格式化语义。比如

原来这个特性就是从 python 3.8 开始支持。现在终于可以放心使用。


海象运算符?

名字是有些抽象,不过用起来还是非常直观。

看下面的例子:

以前,由于需要在两个地方使用列表长度的数量,只能在外面定义一个变量。海象运算符可以让我们在判断的同时定义变量

传说, := 这玩意很像海象的眼睛和长牙。我也说不准,大家来对比一下吧。

不仅仅是判断,其实只要是一些能编写表达式的位置,都可以使用,比如 while 循环

这也是 python 3.8 的特性。


字典推导式计算顺序

在以前的版本中,字典推导式并非先计算 key ,后计算 value。你可能觉得这玩意有什么大不了的。但是,结合前面介绍的海象运算符就不一样了。因为可以在构建 key 的时候创建变量,在构建 value 的时候使用变量。

下面是官方的例子

这算是一道综合应用题了。个人感觉代码很糟糕,大家看情况选用吧。

这些只是开胃小菜,接下来就是大招了!


工具库 functools 大升级

functools 是 python 中非常有用的内置库之一,里面有许多超级实用的函数。其他缓存函数是很常用的。以往的版本中,不管是否带参数,都得执行

  • 注意它必须得到调用,所以后面带有括号

我以前就是经常忘记到底要不要加括号,现在就不用想。反正都可以就对了

同时,新版本追加了全新的实例内缓存属性装饰器

  • 可以看到,两个对象各自执行了两次 num 属性,但是实际属性函数只执行了一次,第18行代码调用获取的是缓存值

也就是说,每个实例化的对象都有自己的独立缓存,并且在自身消耗后,缓存也消失。

注意,这些都只是 python 3.8 的更新


智能提示相关

python 的类型系统已经越来越成熟(越发离谱~),在 python 3.8 中新增了几个非常重要的类型。

首当其冲就是字面量限定,这对于经常需要自定义通用函数的人来说,是非常有用。以往如果一个函数的参数是有限范围内的几个文本,调用者是无法得知具体可以传入什么玩意

  • 一点提示都没有

现在只需要定义 Literal 即可得到智能提示。

类似的就是字典的定义,通过 TypedDict 可以明确规定字典的键值

个人感觉比较麻烦,我是很少用。不过,可以想象以后可能会出现一些辅助工具自动生成类型定义。里面的玩法还是很多

最后就是 协议类 Protocol ,这可以说是 python 类型体操的引领者。简单来说,它可以指定某个类型必须得有某些的方法,并且它会细致到参数的名字。

比较神奇,适合需要写通用库的小伙伴,这里不展开说。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-02-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据大宇宙 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 打印变量真香
  • 海象运算符?
  • 字典推导式计算顺序
  • 工具库 functools 大升级
  • 智能提示相关
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档