Python3.7升级Python3.8(Python3.8新特性调研)

简介: Python3.7升级Python3.8(Python3.8新特性调研)

参考链接:

  • Python官方文档:Python3.8有什么新变化
  • Python官方文档:移植到Python3.8

    Python 行为的改变:

  • yield 表达式(包括 yield 和 yield from 子句)现在不允许在推导式和生成器表达式中使用(但 for 子句最左边的可迭代对象表达式除外)。
    • Python推导式:一种独特的数据处理方式,可以从一个数据序列构建另一个新的数据序列的结构体。如:[out_exp_res for out_exp in input_list]
    • Python生成器表达式:生成器表达式是用圆括号来创建生成器,其语法与推导式相同,只是将 [] 换成了 () ,生成器表达式会产生一个新的生成器对象。如:(out_exp_res for out_exp in input_list)
  • 当标识号检测 (is 和 is not) 与特定类型的字面值 (例如字符串和数字) 一同使用时编译器现在会产生 SyntaxWarning。
  • 从类型字典获取属性时引发的异常不会再被忽略。
  • 从内置类型 bool, int, float, complex 和标准库的一些类中移除了 str 实现。 它们现在会从 object 继承 str()。 作为结果,在这些类的子类中定义 repr() 方法将会影响它们的字符串表示。

    Python API的改变:

  • 在 Windows 上 os.getcwdb() 函数现在会使用 UTF-8 编码格式而不是 ANSI 代码。
  • 现在 subprocess.Popen 在某些情况下会使用 os.posix_spawn() 以获得更好的性能。 在适用于 Linux 的 Windows 子系统和 QEMU 用户模拟器上,使用 os.posix_spawn() 的 Popen 构造器不会再因为“找不到程序”这样的错误引发异常。 而是让子进程失败并返回一个非零的 returncode。
  • imap.IMAP4.logout() 方法不会再静默地忽略任意异常。
  • 当传入多模数据时 statistics.mode() 函数不会再引发异常。 它将改为返回在输入数据中遇到的第一个模式。
  • xml.dom.minidom 的 writexml(), toxml() 和 toprettyxml() 方法以及 xml.etree 的 write() 方法现在会保留用户指定的属性顺序。
  • 附带 'r' 旗标打开的 dbm.dumb 数据库现在将是只读的。 如果数据库不存在,附带 'r' 和 'w' 旗标的 dbm.dumb.open() 不会再创建数据库。
  • 在 XMLParser 的子类中定义的 doctype() 方法将不会再被调用,并将导致发出 RuntimeWarning 而不是 DeprecationWarning。 请在目标上定义 doctype() 方法来处理 XML doctype 声明。
  • 现在当自定义元类未在传给 type.new 的命名空间中提供 classcell 入口时将引发 RuntimeError。 在 Python 3.6--3.7 中是则是引发 DeprecationWarning。
  • shutil.copyfile(), shutil.copy(), shutil.copy2(), shutil.copytree() 和 shutil.move() 会使用平台专属的 "fast-copy" 系统调用。
  • PyGC_Head 结构已被完全改变。 所有接触到该结构的代码都应当被重写。
  • 现在所有平台下的 mmap.flush() 方法都会在成功时返回 None 并在错误时引发异常。 之前它的行为取决于具体平台: Windows 下会在成功时返回非零值;在失败时返回零。 Unix 下会在成功时返回零;在失败时引发错误。
  • xml.dom.minidom 和 xml.sax 模块默认将不再处理外部实体。
  • 从只读的 dbm 数据库 (dbm.dumb, dbm.gnu 或 dbm.ndbm) 删除键将会引发 error (dbm.dumb.error, dbm.gnu.error 或 dbm.ndbm.error) 而不是 KeyError。
  • 简化了字面值的 AST。 所有常量将被表示为 ast.Constant 的实例。 实例化旧类 Num, Str, Bytes, NameConstant 和 Ellipsis 都将返回 Constant 的实例。
  • 异常 asyncio.CancelledError 现在继承自 BaseException 而不是 Exception 并且不再继承自 concurrent.futures.CancelledError。
  • 当使用 asyncio.Task 的实例时,函数 asyncio.wait_for() 现在会正确地等待撤销。 在此之前当达到 timeout 时,它会被撤销并立即返回。
  • 当将 'socket' 作为 name 形参传入时,函数 asyncio.BaseTransport.get_extra_info() 现在会返回一个可安全使用的套接字对象。
  • 关联到 pgen 的头文件和函数在其被纯 Python 实现取代后已被移除。
  • types.CodeType 在构造器的第二个位置新增了一个形参 (posonlyargcount) 以支持在 PEP 570 中定义的仅限位置参数。 第一个参数 (argcount) 现在表示位置参数的总数量 (包括仅限位置参数)。 types.CodeType 中新增的 replace() 方法可用于让代码支持 future 特性。
相关文章
|
18天前
|
Python
闭包(Closure)是**Python中的一种高级特性
闭包(Closure)是**Python中的一种高级特性
34 8
|
2月前
|
存储 大数据 数据处理
Python 中的列表推导式与生成器:特性、用途与区别
Python 中的列表推导式与生成器:特性、用途与区别
29 2
|
3月前
|
存储 安全 数据安全/隐私保护
安全升级!Python AES加密实战,为你的代码加上一层神秘保护罩
【9月更文挑战第12天】在软件开发中,数据安全至关重要。本文将深入探讨如何使用Python中的AES加密技术保护代码免受非法访问和篡改。AES(高级加密标准)因其高效性和灵活性,已成为全球最广泛使用的对称加密算法之一。通过实战演练,我们将展示如何利用pycryptodome库实现AES加密,包括生成密钥、初始化向量(IV)、加密和解密文本数据等步骤。此外,还将介绍密钥管理和IV随机性等安全注意事项。通过本文的学习,你将掌握使用AES加密保护敏感数据的方法,为代码增添坚实的安全屏障。
156 8
|
3月前
|
机器学习/深度学习 人工智能 安全
python和Java的区别以及特性
Python:适合快速开发、易于维护、学习成本低、灵活高效。如果你需要快速上手,写脚本、数据处理、做点机器学习,Python就是你的首选。 Java:适合大型项目、企业级应用,性能要求较高的场景。它类型安全、跨平台能力强,而且有丰富的生态,适合更复杂和规模化的开发。
72 3
|
2月前
|
设计模式 监控 安全
Python多线程编程:特性、挑战与最佳实践
Python多线程编程:特性、挑战与最佳实践
42 0
|
2月前
|
设计模式 监控 安全
Python多线程编程:特性、挑战与最佳实践【1】
Python多线程编程:特性、挑战与最佳实践【1】
36 0
|
3月前
|
JSON 安全 数据库
Python安全性大升级:OAuth与JWT,让你的应用穿上防弹衣🛡️
【9月更文挑战第6天】在数字世界中,每个应用都面临着安全威胁。作为Python开发者,构建强大的系统至关重要。OAuth和JWT为我们提供了坚实的安全保障。OAuth作为一种授权机制,让用户无需向第三方应用暴露敏感信息;JWT则通过自包含的信息传输,增强了安全性并提高了系统性能。利用Python生态中的这些工具,我们可以更好地保护用户数据,守护他们的信任与期待。下面是一个使用PyJWT生成和验证JWT的示例代码:(示例代码同上)通过这些技术,我们的应用能够更加稳健地在数字海洋中航行。
37 3
|
3月前
|
Python
python pip升级3-3
python pip升级3-3
|
4月前
|
Linux Python
Linux 升级安装 Python 3
Linux 升级安装 Python 3
80 2
|
4月前
|
安全 IDE 开发工具
Python——记录pip问题(解决下载慢、升级失败问题)
Python——记录pip问题(解决下载慢、升级失败问题)
362 1
下一篇
DataWorks