Python 3.8 新功能-文尾有视频版链接

Python 3.8是Python编程语言的最新主要版本, 它包含许多新功能和优化。

Python

Python 3.8

Python 3.8的一些新功能包括:

> 1. 海象运算符

Python

Walrus

在这个新版本中,我们有一种新的赋值运算符,称为Walrus运算符(:=)。该运算符的优点是可以在一行中设置和返回变量。例如:

sample_data = [
{"id": 1, "name":"bobo"},
{"id": 2, "name":"lili"},
{"id": 3, "name":"aibi"},
{"id": 4, "name":"fashi"},
]

print("使用 Python 3.8 海象:")

for entry in sample_data:
    # 这里是设置了 并返回了一个name
    # 所以我们可以 if 判断
    if name := entry.get("name"):
        print(f'Found name = {name}')

print("不使用海象:")
for entry in sample_data:
    # 这里只能传统赋值 判断
    name = entry.get("name")
    if name:
        print(f'Found name = {name}')

结果一致
title

> 2. 仅限位置形参

现在,在定义方法的参数时可以使用特殊的标记「/」,以指定该函数仅接受标记左侧的位置参数。此处的「/」标记表示x,y和z的值只能在位置上传递,而不能使用关键字参数。

Code:
def func1(x,y,z=None,/):
    r = x + y
    if z is not None:
        r -= z
    return r
print(func1(2, 5)) #7
print(func1(2, 5, 3)) #4
print(func1(x=2, y=10)) #TypeError
print(func1(2, 10, z=3)) #TypeError

> 3. f-string支持「=」

现在,你可以在f-string中使用「=」运算符来获取并打印值。
这意味着现在我们可以在f-string中执行算术运算了。

a = 1

b = 2

print(f'{a=}{b=}')
#a=1b=2
print(f'{a=},{b=}')
#a=1,b=2
# 但是python3.7 则直接报错

> 4. 新语法警告**

Python为缺少逗号引入了新的警告消息,在这个新版本中的错误消息。解释器会抛出这个有用的警告信息,这将有助于用户快速找到自己的错误。

list1=[[0,1] [2,3]] #这将给出缺少逗号和TypeError的SyntaxWarning。

翻译为:列表索引必须是整数或切片,而不是元组;可能您遗漏了逗号?

Python

SyntaxWarning

> 5. 可逆字典

reversed()现在可用于字典。Python已经开始从3.7开始保留dictionary中插入键的顺序,但现在在3.8中,您也可以反转它。

dict1={'a':5,'b':6}
print(dict1)    #{'a': 5, 'b': 6}
print(list(reversed(dict1)))    ['b', 'a']

> 6. 多处理共享内存

使用多处理,可以跨 Python 的所有实例全局共享和访问数据。这将大大加快数据的保存、存储、访问和传输。

> 7. 创建pickle文件的新协议

Python中的Pickle主要用于序列化和反序列化数据,以及可以在其他地方使用的代码。在这个新版本中,Python将默认使用Protocol 4,您也可以将Protocol 5与之一起使用。这将使api得到充分利用,从而提高性能。
对于在数据科学领域工作的人来说,这是一个令人兴奋的消息,因为即使在空间较低或有限的服务器上,这也能很好地与Django和Flask一起工作。

> 8. 改进的 CPython

Python还表示,他们已经改进了Python的C引擎。这将使Python中的优化变得容易。数据科学领域的人们已经遇到了很多Python或Jupyter环境由于大量数据而崩溃的例子。随着CPython模块的改进,用户可以期望在处理和查询数据时获得更好的结果。

> 9. 性能改进

此版本增加了一些性能,加快了解释器的速度。其中一些是:

  • operator.itemgetter() 现在快了33%。
  • Field lookups in collections.namedtuple() 中的字段查找现在快了两倍多。
  • 列表构造函数现在创建的列表平均小12%。
  • uuid.UUID 现在使用插槽来减少内存占用。
  • 一些简单的内置和方法的调用现在快了20-50%。

还有很多…
要了解更多,请检查 https://www.python.org/downloads/release/p...


总结

即将发布的Python为该语言添加了一些很棒的新特性,并通过基本的加速修复显著提高了性能。让我们欢迎Python3.8并充分利用它。

本文视频教程

https://www.bilibili.com/video/av77153399

本作品采用《CC 协议》,转载必须注明作者和本文链接
嗨,我是波波。曾经创业,有收获也有损失。我积累了丰富教学与编程经验,期待和你互动和进步! 公众号:上海PHP自学中心 付费知识星球:破解面试:程序员的求职导师
讨论数量: 1
wangchunbo

喜欢的,欢迎素质三连哈。

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
司机 @ 欣昊玉
文章
273
粉丝
339
喜欢
558
收藏
1106
排名:64
访问:12.2 万
私信
所有博文
社区赞助商