近期,Python 3.8已经发布。 不过别担心,小芯已经为你总结好了Python 3.8中每个新手都应该掌握的6大新功能。

IT业日新月异,落后的Python 2将在2020年逐渐被淘汰。

2019年,随着数据科学的兴起,Python成为了最热门的程序语言。 尽管如此,面对浩如烟海的知识,应接不暇也是正常的。语法不断变化,每次Python更新,都会添加许多新的表达。有很多功能小芯只恨自己知道得太晚了。 如果读者也感同身受,这里有一个坏消息:近期,Python 3.8已经发布。 不过别担心,小芯已经为你总结好了Python 3.8中每个新手都应该掌握的6大新功能。

1. 新模块:读取元数据历

使用新的importlib.metadata模块可以读取第三方包的元数据。可以在

脚本包中获取版本号。

2. 字典反转:排序

现在,字典可以用resersed( )在反转插入排序中实现迭代了。

3. Continue – finally

由于Python的实现问题,以前在Finally子句中添加continue语句是不合法的。现在这一问题已不复存在。

for i inrange(2):

try:

print(i)

finally:

print('A sentence.')

continue

print('This never shows.')

# Python <= 3.7 >>SyntaxError: 'continue'not supported inside 'finally' clause

# Python 3.8

>>0

A sentence.

1

A sentence.

4. 指示参数类型:让代码更强大

Python函数只接受两种参数。

位置参数:根据函数定义的参数位置来传递参数。

关键字参数:使用关键字来指定参数。

在下例中,参数a和参数b的值可由位置参数或关键字参数确定,非常灵活。

def my_func(a, b=1):

return a+bmy_func(5,2)     # both positional arguments

my_func(a=5,b=2) # both keyword arguments

新版本的Python用语法/和*作区分,提供了指定接受位置参数或关键字参数的方法。注意:语法*并不是在Python 3.8中才出现。

在下面的例子中,开头的两个参数a和b只接受位置参数,中间的c和d可接受位置参数或关键字参数,最后的e和f只接受关键字参数。

defmy_func(a, b, /, c, d, *, e, f):

return a+b+c+d+e+f

my_func(1,2,3,4,5,6)          # invalid  as e and f are keyword-only

my_func(a=1,b=2,3,4,e=5,f=6) # invalid as a and b are position-only

my_func(1,2,c=3,4,e=5,f=6)    # returns  21

my_unc(1,2,c=3,d=4,e=5,f=6)  # returns 21

为什么要牺牲灵活性呢?如果参数名称随意且无用,就应该排除关键字参数。如果预计函数中的参数名可能会发生变化,指定参数类型能避免代码崩溃,也能让代码更加强大。

5. 赋值表达式:提升代码可读性

赋值表达式,又称海象运算符,是以:=为语法形式的新运算符,它能把较大表达式中的某部分赋值给变量。这无疑是Python 3.8中讨论最多的新功能了。

来看个例子: 赋值表达式b := a**2 将a的平方,也就是36,赋值给b,然后检查b的值是否大于0。

a =6

# The following statement

# assigns the value a ** 2 to  variable b,

# and then check if b > 0 is  true

if (b := a **2) >0:

print(f'The  square of {a} is {b}.') # The square of 6 is 36.

有时赋值表达式能让代码更加简洁可读。但是,请注意不要滥用赋值表达式,因为在某些情况下它会让代码更加难懂。

# DON'T DO THIS!

a = 5

d = [b := a+1, a := b-1, a := a*2]

其他(老)程序语言中也有赋值表达式,希望改用Python的程序员们能(多)用这一新功能。在赋值表达式泛滥之前赶快掌握它吧。

6. F字符串2.0: 调试(debug)的利器

Python f字符串改变了游戏规则。F字符串是格式化字符串的语法,简洁且易读。利用语法f'{expr}',在引号前加上f,将表达式用大括号括住,就能够将表达式插入字符串。

Python更新之后,等于号“=”能够在f字符串f'{expr=}'语法中作为格式限定符使用。输出的字符串为变量名=变量值,如下所示:

# DON'T DO THIS!

a = 5

d = [b := a+1, a := b-1, a := a*2]

出于编制文件或调试 (Debug) 的需要,常需要指明变量值。F字符串使得调试(debug)易如反掌。

当然,在投身Python 3.8编程之前,你需要掌握Python基本功能(必不可少)。

这就是Python的6大新功能,每个Python新手都能从中获益。

python 3.8 新特性_Python 3.8六大新功能相关推荐

  1. [转]C# 2.0新特性与C# 3.5新特性

    C# 2.0新特性与C# 3.5新特性 一.C# 2.0 新特性: 1.泛型List<MyObject> obj_list=new List(); obj_list.Add(new MyO ...

  2. SQL Server 2016新特性:列存储索引新特性

    SQL Server 2016新特性:列存储索引新特性 行存储表可以有一个可更新的列存储索引,之前非聚集的列存储索引是只读的. 非聚集的列存储索引支持筛选条件. 在内存优化表中可以有一个列存储索引,可 ...

  3. Kinect SDK v1.7 新特性、交互框架与新概念

    Kinect SDK v1.7 新特性.交互框架与新概念 zouxy09@qq.com http://blog.csdn.net/zouxy09 2013年3月18日,微软Kinect for Win ...

  4. Oracle 21C 新特性:数据泵相关新特性汇总

    墨墨导读:本文来自墨天轮用户"JiekeXu"投稿,墨天轮主页:https://www.modb.pro/u/434,本文分享Oracle 21c 新特性:数据泵相关新特性汇总. ...

  5. 重新想象 Windows 8.1 Store Apps (91) - 后台任务的新特性: 下载和上传的新特性, 程序启动前预下载网络资源, 后台任务的其它新特性...

    原文:重新想象 Windows 8.1 Store Apps (91) - 后台任务的新特性: 下载和上传的新特性, 程序启动前预下载网络资源, 后台任务的其它新特性 [源码下载] 重新想象 Wind ...

  6. 【小家java】java9新特性(简述十大新特性) 褒贬不一

    相关阅读 [小家java]java5新特性(简述十大新特性) 重要一跃 [小家java]java6新特性(简述十大新特性) 鸡肋升级 [小家java]java7新特性(简述八大新特性) 不温不火 [小 ...

  7. 【小家java】java10新特性(简述十大新特性) 小步迭代

    相关阅读 [小家java]java5新特性(简述十大新特性) 重要一跃 [小家java]java6新特性(简述十大新特性) 鸡肋升级 [小家java]java7新特性(简述八大新特性) 不温不火 [小 ...

  8. Java11新特性(一)——JDK11新特性概述

    序言 关于JDK11,自从去年也就是2018年9月份 Oracle 对外公布--JDK11正式发布以来,博主就跃跃欲试,但是由于项目周期时间紧,一直未果,今年,也就是2019年2月底系统正式上线,博主 ...

  9. python新特性_Python3.6正式版新特性预览

    按照Python官网上的计划,Python3.6正式版期望在2016-12-16号发布,也就是这周五.从去年的5月份开始,Python3.6版本就已经动手开发了,期间也断断续续的发布了4个Alpha版 ...

最新文章

  1. python filedialog_Python使用FileDialog将列表保存到指定的excel文件中,python,filedialog
  2. BZOJ-1406-密码箱-AHOI2007-数学
  3. 直播 | AAAI 2022论文解读:三⻆分解一致性约束的端到端语音翻译
  4. Linux umask 文件默认权限
  5. Linux项目自动化构建工具 make/Makefile
  6. win7 没有microsoft print to pdf_现在还能不能下载到正版WIN 7
  7. 5404. 用栈操作构建数组
  8. pytorch初试:CNN实现
  9. 《锋利的jQuery》要点归纳(五)jQuery与ajax的应用(上)
  10. c语言程序设计的实验仪器和设备,C语言程序设计实验.doc
  11. python cnn 时间序列_有什么好的模型可以做高精度的时间序列预测呢?
  12. VS2010 正式版 破解方法详解 1
  13. codeforces228A Is your horseshoe on the other hoof?(水题)
  14. Git之(三)辅助命令
  15. JSONObject 转对象
  16. 硬盘内部传输速率和外部传输速率的区别
  17. R语言,向量x=c(“我“,“你“,“我“,“我“,“你“,“他“,“们“,“他“,“人“)中,统计向量x中的字出现的次数。 写出R代码。
  18. 分享Python采集的77个PHP整站程序源码
  19. vscode配置c++环境并解决中文乱码问题
  20. Spline算法实现

热门文章

  1. 微信自动回复如何实现?用 Python 就可以!
  2. 深度学习与计算机视觉系列(3)_线性SVM与SoftMax分类器--在深度学习的视觉分类中的,这两个分类器的原理和比较
  3. 『ExtJS』表单(一)常用表单控件及内置验证
  4. 2个通用js树型导航
  5. python实现Queue和Stack
  6. 漫步数学分析十二——嵌套
  7. miniui 查询_JQueryMiniUI按照时间进行查询的实现方法
  8. c语言多线程_马云都称赞的C语言、C++学习路线!!!!
  9. 矩阵的特征向量和特征值
  10. 去哪儿-05-recommendDev