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 特性。
相关文章
|
2月前
|
测试技术 API Python
Python 3.10 的首个 PEP 诞生,内置类型 zip() 迎来新特性
Python 3.10 的首个 PEP 诞生,内置类型 zip() 迎来新特性
44 2
|
7月前
|
安全 Python
Mac Python升级
Mac Python升级
48 0
|
7月前
|
Ubuntu Python
百度搜索:蓝易云【ubuntu16.04升级python3.7.1教程】
现在您已经成功升级到Python 3.7.1。请注意,这仅适用于Ubuntu 16.04,如果您使用的是其他版本的Ubuntu或不同的操作系统,请查阅相应的文档或指南进行操作。
193 0
|
2天前
|
Ubuntu Python
ubuntu升级Python版本
现在,你已成功升级了Python版本并可以使用新版本进行开发和运行程序。
16 1
|
5月前
|
缓存 并行计算 PyTorch
win11+pytorch1.7.0+python3.8(也可以是python3.7)+cuda11.0
win11+pytorch1.7.0+python3.8(也可以是python3.7)+cuda11.0
135 0
|
1月前
|
Python
Python的高级语法及许多特性
Python的高级语法及许多特性
20 0
|
3月前
|
机器学习/深度学习 监控 安全
Python3.12 新版本之f-string的几个新特性
Python3.12 新版本之f-string的几个新特性
44 0
|
9月前
|
Java Linux Shell
centos7内网离线安装face_recognition、python、pip、CMake、dlib,离线升级gcc/切换gcc,文末有face_recognition的docker版本
公司项目需要人脸识别,本来app自带人脸识别,结果api支持的设备试了一圈就一个同事的华为Mate40Pro可以,所以使用无望。接着找了一下免费的java离线人脸识别sdk,发现虹软的确实简单好用,一会就在linux上弄好并测试通过了,然而在准备集成进去开写代码时,不小心看到了一眼首次激活需联网,后续方可离线使用,好吧,我们内网机器首次都不可能的,接着看了下离线激活方法,首先需要企业认证,这一步我们肯定没法做的,毕竟不是之前的小公司了,营业执照啥的随便给我肯定不行,直接放弃了。后来在同事推荐下看了下face_recognition这个项目,之前基本没用过python,于是有了漫长的踩坑之旅。
363 1
|
4月前
|
数据采集 文字识别 Python
介绍一个打怪升级练习Python的网站,寓教于乐了属于是!
介绍一个打怪升级练习Python的网站,寓教于乐了属于是!
|
5月前
|
缓存 Unix Linux
尝试安装或升级Python包时,由于设备上没有足够的空间而导致的错误
尝试安装或升级Python包时,由于设备上没有足够的空间而导致的错误
98 4