...

2022 年现代 Python 编程的 4 个关键点

2022-01-29

作为一个诞生已有 30 余年的编程语言,Python 的流行度在近几年迎来了爆炸性的增长。为了方便大家能够更好的采用 Python,利用该语言中所有新的和强大的功能;InfoWorld 归纳总结了开发人员在 2022 年编写现代 Python 时所需要理解的一些关键概念。

总共四个方面,具体如下:

1、Python 中的类型提示

Python 最近引入的类型提示语法允许 linter 和第三方代码质量工具在运行前分析你的代码,并在检测出可能发生的错误。你创建的 Python 代码与他人共享的次数越多,大家就越有可能从使用类型提示中受益。

Python 的每个后续版本都推出了更复杂、更强大的类型注解。如果你养成了在短期内学习如何使用类型注解的习惯,那么就能够更好地利用每一种新的类型提示创新。

重要的是要记住类型提示是可选的,而不是必须的。不是每个项目都需要它们,类型提示可以使你的大项目变得易懂,但小项目却并不必要。值得注意的是,虽然在运行时不强制执行类型提示,但你可以使用 Pydantic 来使之成为可能。许多广泛使用的 Python 项目:如 FastAPI,都广泛使用 Pydantic。

2、Python 虚拟环境和包管理

对于简单的项目和要求不高的开发工作,通常可以只使用 Python 的内置venv工具将项目及其需求分开。但 Python 工具的最新进展则为开发人员提供了更多选择:

 

  • Pyenv:如果你需要安装多个 Python 版本(3.8、3.9、3.10)以满足不同的项目要求,Pyenv 允许你在每个项目的基础上在它们之间进行全局切换。值得注意的是,它没有官方的 Windows 支持,但确实存在非官方的 Windows 端口。

  • Pipenv:被称为“Python dev workflow for humans”,Pipenv 旨在管理虚拟环境以及项目的所有依赖项。它还确保依赖关系是确定性的 —— 你得到你想要的特定版本,并且它们以你要求的组合方式工作。但是,Pipenv 不涉及任何形式的打包,因此对于你最终想要上传到 PyPI 或与他人共享的项目来说,它并不理想。

  • Poetry:Poetry 扩展了 Pipenv 的工具集,不仅可以管理项目和需求,还可以轻松地将项目部署到 PyPI。它还为你管理独立于项目目录的虚拟环境。

  • PDM:PDM(“Python Development Master”的缩写)是这方面最新的前沿项目。与 Poetry 和 Pipenv 一样,PDM 为你提供了一个用于设置项目、管理其依赖项以及从中构建分发工件的单一界面。PDM 还使用 PEP 582 标准将包本地存储到项目中,因此无需创建每个项目的虚拟环境。但是这个工具相对较新,所以在生产中采用它之前要确保它能暂时工作。

3、新的 Python 语法

Python 的发展意味着该语言本身增加了许多新功能。Python 最新的几个版本中添加了一些有用的语法结构,使其更强大和更简洁程。最近增加的一些内容包括:

Pattern matching

最近最大的新增功能是结构模式匹配,出现在 Python 3.10 中。它不仅仅是所谓的“switch/case for Python”,还可以让你根据对象的内容或结构做出控制流决策。

The ‘walrus operator’

因其外观 (:=) 而得名,在 Python 3.8 中添加的“walrus operator(海象操作符)”引入了赋值表达式,这是一种将一个值赋给一个变量,然后在一个步骤中对该变量进行测试的方法。它可以在许多常见情况下减少冗长的代码,例如检查函数的返回值同时保留结果。

Positional-only parameters

最近对 Python 语法的一个小而有用的新增功能 positional-only parameters 允许你指明哪些函数参数必须指定为位置参数,而不是关键字参数。这样做的基本原理通常包括提高代码库的清晰度和简化代码库的未来开发,这也是许多 Python 的其他新特性所关注的目标。

4、Python 测试

Python 有自己的内置测试框架 Unittest,虽然 Unittest 作为默认设置还不错,但它的设计和行为已经过时了。Pytest 框架已成为一种常见的替代品,要更灵活(你可以在代码的任何部分声明测试,而不仅仅是一个子集),并且需要编写的模板少得多。另外,Pytest 还有大量的附加组件来扩展其功能(例如,用于测试异步代码)。


来源:oschina
相关内容[ { "imageUrlCount": 0, "videoUrlCount": 0, "fileUrlCount": 0, "channelId": 24, "siteId": 1, "adminId": 2, "lastEditAdminId": 2, "userId": 0, "taxis": 437, "groupNames": [], "tagNames": [ "Python" ], "sourceId": 0, "referenceId": 0, "templateId": 0, "checked": true, "checkedLevel": 0, "hits": 0, "hitsByDay": 0, "hitsByWeek": 0, "hitsByMonth": 0, "lastHitsDate": null, "downloads": 0, "title": "2022 年现代 Python 编程的 4 个关键点", "subTitle": "", "seoTitle": null, "imageUrl": "", "videoUrl": "", "fileUrl": "", "keywords": "Python", "description": "2022 年现代 Python 编程的 4 个关键点", "body": "

作为一个诞生已有 30 余年的编程语言,Python 的流行度在近几年迎来了爆炸性的增长。为了方便大家能够更好的采用 Python,利用该语言中所有新的和强大的功能;InfoWorld 归纳总结了开发人员在 2022 年编写现代 Python 时所需要理解的一些关键概念。

总共四个方面,具体如下:

1、Python 中的类型提示

Python 最近引入的类型提示语法允许 linter 和第三方代码质量工具在运行前分析你的代码,并在检测出可能发生的错误。你创建的 Python 代码与他人共享的次数越多,大家就越有可能从使用类型提示中受益。

Python 的每个后续版本都推出了更复杂、更强大的类型注解。如果你养成了在短期内学习如何使用类型注解的习惯,那么就能够更好地利用每一种新的类型提示创新。

重要的是要记住类型提示是可选的,而不是必须的。不是每个项目都需要它们,类型提示可以使你的大项目变得易懂,但小项目却并不必要。值得注意的是,虽然在运行时不强制执行类型提示,但你可以使用 Pydantic 来使之成为可能。许多广泛使用的 Python 项目:如 FastAPI,都广泛使用 Pydantic。

2、Python 虚拟环境和包管理

对于简单的项目和要求不高的开发工作,通常可以只使用 Python 的内置venv工具将项目及其需求分开。但 Python 工具的最新进展则为开发人员提供了更多选择:

 

  • Pyenv:如果你需要安装多个 Python 版本(3.8、3.9、3.10)以满足不同的项目要求,Pyenv 允许你在每个项目的基础上在它们之间进行全局切换。值得注意的是,它没有官方的 Windows 支持,但确实存在非官方的 Windows 端口。

  • Pipenv:被称为“Python dev workflow for humans”,Pipenv 旨在管理虚拟环境以及项目的所有依赖项。它还确保依赖关系是确定性的 —— 你得到你想要的特定版本,并且它们以你要求的组合方式工作。但是,Pipenv 不涉及任何形式的打包,因此对于你最终想要上传到 PyPI 或与他人共享的项目来说,它并不理想。

  • Poetry:Poetry 扩展了 Pipenv 的工具集,不仅可以管理项目和需求,还可以轻松地将项目部署到 PyPI。它还为你管理独立于项目目录的虚拟环境。

  • PDM:PDM(“Python Development Master”的缩写)是这方面最新的前沿项目。与 Poetry 和 Pipenv 一样,PDM 为你提供了一个用于设置项目、管理其依赖项以及从中构建分发工件的单一界面。PDM 还使用 PEP 582 标准将包本地存储到项目中,因此无需创建每个项目的虚拟环境。但是这个工具相对较新,所以在生产中采用它之前要确保它能暂时工作。

3、新的 Python 语法

Python 的发展意味着该语言本身增加了许多新功能。Python 最新的几个版本中添加了一些有用的语法结构,使其更强大和更简洁程。最近增加的一些内容包括:

Pattern matching

最近最大的新增功能是结构模式匹配,出现在 Python 3.10 中。它不仅仅是所谓的“switch/case for Python”,还可以让你根据对象的内容或结构做出控制流决策。

The ‘walrus operator’

因其外观 (:=) 而得名,在 Python 3.8 中添加的“walrus operator(海象操作符)”引入了赋值表达式,这是一种将一个值赋给一个变量,然后在一个步骤中对该变量进行测试的方法。它可以在许多常见情况下减少冗长的代码,例如检查函数的返回值同时保留结果。

Positional-only parameters

最近对 Python 语法的一个小而有用的新增功能 positional-only parameters 允许你指明哪些函数参数必须指定为位置参数,而不是关键字参数。这样做的基本原理通常包括提高代码库的清晰度和简化代码库的未来开发,这也是许多 Python 的其他新特性所关注的目标。

4、Python 测试

Python 有自己的内置测试框架 Unittest,虽然 Unittest 作为默认设置还不错,但它的设计和行为已经过时了。Pytest 框架已成为一种常见的替代品,要更灵活(你可以在代码的任何部分声明测试,而不仅仅是一个子集),并且需要编写的模板少得多。另外,Pytest 还有大量的附加组件来扩展其功能(例如,用于测试异步代码)。


", "summary": "作为一个诞生已有 30 余年的编程语言,Python 的流行度在近几年迎来了爆炸性的增长。为了方便大家能够更好的采用 Python,利用该语言中所有新的和强大的功能;InfoWorld 归纳总结了开发人员在 2022 年编写现代 Python 时所需要理解的一些关键概念。", "author": "", "source": "oschina", "top": false, "recommend": false, "hot": false, "color": false, "linkUrl": null, "addDate": "2022-01-29 09:46:00", "price": 0.0, "oldPrice": 0.0, "stockQuantity": 0, "priceUnit": null, "isMainContent": true, "allowAddSubContent": false, "relatedContentId": 0, "subContentNum": 0, "mainContent": null, "subContents": null, "attributeIds": null, "attributeValueIds": null, "id": 664, "guid": "6cfeb5a5-18ed-4a06-9157-12e0b0e7411b", "createdDate": "2022-01-29 09:47:45", "lastModifiedDate": "2022-01-29 09:47:45" }, { "imageUrlCount": 0, "videoUrlCount": 0, "fileUrlCount": 0, "channelId": 24, "siteId": 1, "adminId": 2, "lastEditAdminId": 2, "userId": 0, "taxis": 283, "groupNames": [], "tagNames": [ "微软", "Visual Studio", "Python" ], "sourceId": 0, "referenceId": 0, "templateId": 0, "checked": true, "checkedLevel": 0, "hits": 0, "hitsByDay": 0, "hitsByWeek": 0, "hitsByMonth": 0, "lastHitsDate": null, "downloads": 0, "title": "微软将改变在 Visual Studio 中对 Python 的支持", "subTitle": "", "seoTitle": null, "imageUrl": "@upload/images/2021/12/e7e25b2365d767c7.png", "videoUrl": "", "fileUrl": "", "keywords": "微软,Visual Studio,Python", "description": "微软将改变在 Visual Studio 中对 Python 的支持", "body": "

Visual Studio 是微软开发的知名 IDE,也是一款被全球各地的开发人员广泛使用的 IDE。在上个月,微软正式发布了新版 Visual Studio 2022,其中包含了一系列针对编程语言、云服务、扩展性、热重载,以及编辑器的改进。近日微软官方发布博客表示,他们将改变 Python 与 Visual Studio 的每个版本捆绑在一起的方式。

\"\"

按照惯例,Visual Studio 的每个新版本都会针对一个特定版本的 Python。例如,Visual Studio 2019 附带对 Python 3.7 的支持,而 Visual Studio 2022 则默认支持 Python 3.9。由于 Visual Studio 和 Python 的发布周期不同,因此会导致每个版本的 Visual Studio 最后都会变为支持一个过时版本的 Python。

按照 Python 的更新周期,Python 每年都会发布新版本,二进制的 Windows 安装程序通常在发布后 18 个月内可用。这意味着在当前的更新频率和发布周期下,如果 Visual Studio 的更新周期超过 18 个月,它将会捆绑一个过时的 Python 版本(例如:Visual Studio 2019 发布于 2019 年 4 月,而 Visual Studio 2022 发布于 2021 年 11 月,中间间隔了 30 个月)。

正因如此,微软计划改变了这个 Python 捆绑策略来解决这个问题。在新的策略下,Visual Studio 将以最新的广泛采用的 Python 版本为目标。这表明当 Visual Studio 2022 在之后获得更新时,新版本可能会捆绑 Python 3.10、Python 3.11 或更新版本(取决于届时哪个版本会被广泛采用)。

升级新版本后,旧版本仍可继续使用,但那些不再从 Python 软件基金会接收更新的版本将被微软标记为过时/不再支持 —— 表明在项目中继续使用这个版本可能会构成潜在的安全风险。

如果仅将 IDE 用于 Python 开发的话,其他轻量级的编辑器可能是更好的选择。


", "summary": "Visual Studio 是微软开发的知名 IDE,也是一款被全球各地的开发人员广泛使用的 IDE。在上个月,微软正式发布了新版 Visual Studio 2022,其中包含了一系列针对编程语言、云服务、扩展性、热重载,以及编辑器的改进。近日微软官方发布博客表示,他们将改变 Python 与 Visual Studio 的每个版本捆绑在一起的方式。", "author": "", "source": "oschina", "top": false, "recommend": false, "hot": false, "color": false, "linkUrl": null, "addDate": "2021-12-11 22:11:00", "price": 0.0, "oldPrice": 0.0, "stockQuantity": 0, "priceUnit": null, "isMainContent": true, "allowAddSubContent": false, "relatedContentId": 0, "subContentNum": 0, "mainContent": null, "subContents": null, "attributeIds": null, "attributeValueIds": null, "id": 459, "guid": "41ba9f51-fcf3-44fa-a00f-037a7cd38d85", "createdDate": "2021-12-11 22:12:40", "lastModifiedDate": "2021-12-11 22:12:40" } ]