21

新手必看:Python 3.8六大新功能

 4 years ago
source link: https://developer.51cto.com/art/202001/609769.htm
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

新手必看:Python 3.8六大新功能

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

作者:读芯术来源:读芯术|2020-01-31 18:40

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

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

cccadd7e8197df5b5c961d6d91c25103.jpg-wh_651x-s_3921559838.jpg

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

使用新的importlib.metadata模块可以读取第三方包的元数据。可以在脚本包中获取版本号。

2. 字典反转:排序

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

3. Continue – finally

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

  1. for i inrange(2): 
  2.         print(i) 
  3.     finally: 
  4.         print('A sentence.') 
  5.         continue 
  6.         print('This never shows.') 
  7. # Python <= 3.7 
  8. >>SyntaxError: 'continue'not supported inside 'finally' clause 
  9. # Python 3.8 
  10. >>0 
  11.    A sentence. 
  12.    A sentence. 

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

Python函数只接受两种参数。

  • 位置参数:根据函数定义的参数位置来传递参数。
  • 关键字参数:使用关键字来指定参数。

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

  1. def my_func(a, b=1): 
  2.     return a+bmy_func(5,2)     # both positional arguments 
  3. my_func(a=5,b=2) # both keyword arguments 

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

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

  1. defmy_func(a, b, /, c, d, *, e, f): 
  2.     return a+b+c+d+e+f 
  3. my_func(1,2,3,4,5,6)          # invalid  as e and f are keyword-only 
  4. my_func(a=1,b=2,3,4,e=5,f=6) # invalid as a and b are position-only 
  5. my_func(1,2,c=3,4,e=5,f=6)    # returns  21 
  6. 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。

  1. # The following statement 
  2. # assigns the value a ** 2 to  variable b, 
  3. # and then check if b > 0 is  true 
  4. if (b := a **2) >0: 
  5.     print(f'The  square of {a} is {b}.') # The square of 6 is 36. 

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

  1. # DON'T DO THIS! 
  2. 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=}'语法中作为格式限定符使用。输出的字符串为变量名=变量值,如下所示:

  1. # DON'T DO THIS! 
  2. d = [b := a+1, a := b-1, a := a*2] 

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

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

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

【编辑推荐】

【责任编辑:赵宁宁 TEL:(010)68476606】
点赞 0

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK