百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

微软推出Pylance,随着VS Code更新,性能又进一步

itomcoil 2024-12-09 13:48 28 浏览

编辑:陈萍

微软推出的 VS Code Python 语言插件 Pylance,给 Python 带来编译语言般的开发支持。对于最近更新的 VS Code 版本,除了保留 Pylance 原始特性外,又引入了新特性。


Pylance 是微软今年推出的 Python 语言服务器,可以利用语言服务器协议与 VS Code 进行通信。Pylance 在 VS Code 中为 Python 提供了快速、特性丰富的语言支持,并依赖于核心的 Python 扩展,从而极大地改善了 VS Code 中的 Python 体验。


随着本月 VS Code 的更新,Pylance 可以执行用户期待已久的操作,将 Python 开发体验带到一个新的水平。在本文中,机器学习工程师 Dimitris Poulopoulos 将为读者介绍 Pylance 的功能以及在新版 VS Code 中的可用最新特性。


Python stub 文件


Pylance 利用类型 stub 文件(.pyi 文件)和惰性类型推断为使用者提供了高效的开发体验。


什么是 stub 文件呢?


Stub 文件为 Python 模块提供类型提示信息。完整的官方信息可以在 PEP-484 中的 Stub-files 章节中找到。例如,下面的 Python 函数存在于 my_function.py 模块:


def add(a, b):
   return a + b


我们也可以创建一个新的 stub 文件 my_function.pyi,以提供类型提示:


def add(a: int, b: int) -> int: ...


注意:在 stub 文件中,定义函数末尾的「...」是语法的一部分。


然而,我们可以在 Python 模块中插入类型提示,而不需要创建新的 stub 文件,如下代码所示


def add(a: int, b: int) -> int:
   return a + b


问题来了:我们为什么要使用 stub 文件呢?这里有几个原因:例如保持. py 文件向后兼容;向现有代码库中提供类型提示,并希望尽量减少源代码本身的更改等等。


讲完 stub 文件优点,我们再回到 Pylance 本身。stub 文件通过丰富的类型信息增强了 Python IntelliSense 体验,帮助开发者更快地编写代码。更重要的是,Pylance 已经为流行模块提供了一个 stub 集合,其内置的 stub 库提供精确的类型检查以及快速自动补全功能。


Pylance 特性展示


和其他 Python 语言服务器一样,Pylance 也是围绕提升开发效率和体验进行优化。Pylance 特性有很多,下面介绍几个比较重要的特性:


类型信息显示:当你把鼠标悬浮在对应的函数上方时,就可以显示对应的函数文档。



自动导入功能:在使用 Pycharm 的时候,当用到某个包或者模块时,可以通过快捷键 Alt+Enter 快速导入对应的模块。通过 Pylance 也可以实现相同的功能,现在我们可以自动导入已经安装好的标准库模块。



类型检查:类型检查可以帮助我们验证参数在传入函数执行前类型是否正确。Pylance 中类型检查默认是关闭的,需要在设置中启动,操作方法为:设置「python.analysis.typeCheckingMode」为「basic」或者是「strict」。



VS Code 更新引入了 Pylance 新特性


最近,VS Code 更新引入了几个新的 Pylance 特性,其中代码提取和 Pylance Insiders 程序非常重要。


代码提取:我们可以通过单击来提取代码中的方法和变量。



Pylance Insiders:Pylance Insiders 程序,它提供了对新语言服务器特性和改进的早期访问。要启用 insiders,请设置「pylance.insidersChannel」:「daily」。

相关推荐

selenium(WEB自动化工具)

定义解释Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7,8,9,10,11),MozillaF...

开发利器丨如何使用ELK设计微服务中的日志收集方案?

【摘要】微服务各个组件的相关实践会涉及到工具,本文将会介绍微服务日常开发的一些利器,这些工具帮助我们构建更加健壮的微服务系统,并帮助排查解决微服务系统中的问题与性能瓶颈等。我们将重点介绍微服务架构中...

高并发系统设计:应对每秒数万QPS的架构策略

当面试官问及"如何应对每秒几万QPS(QueriesPerSecond)"时,大概率是想知道你对高并发系统设计的理解有多少。本文将深入探讨从基础设施到应用层面的解决方案。01、理解...

2025 年每个 JavaScript 开发者都应该了解的功能

大家好,很高兴又见面了,我是"高级前端进阶",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发。1.Iteratorhelpers开发者...

JavaScript Array 对象

Array对象Array对象用于在变量中存储多个值:varcars=["Saab","Volvo","BMW"];第一个数组元素的索引值为0,第二个索引值为1,以此类推。更多有...

Gemini 2.5编程全球霸榜,谷歌重回AI王座,神秘模型曝光,奥特曼迎战

刚刚,Gemini2.5Pro编程登顶,6美元性价比碾压Claude3.7Sonnet。不仅如此,谷歌还暗藏着更强的编程模型Dragontail,这次是要彻底翻盘了。谷歌,彻底打了一场漂亮的翻...

动力节点最新JavaScript教程(高级篇),深入学习JavaScript

JavaScript是一种运行在浏览器中的解释型编程语言,它的解释器被称为JavaScript引擎,是浏览器的一部分,JavaScript广泛用于浏览器客户端编程,通常JavaScript脚本是通过嵌...

一文看懂Kiro,其 Spec工作流秒杀Cursor,可移植至Claude Code

当Cursor的“即兴编程”开始拖累项目质量,AWS新晋IDEKiro以Spec工作流打出“先规范后编码”的系统工程思维:需求-设计-任务三件套一次生成,文档与代码同步落地,复杂项目不...

「晚安·好梦」努力只能及格,拼命才能优秀

欢迎光临,浏览之前点击上面的音乐放松一下心情吧!喜欢的话给小编一个关注呀!Effortscanonlypass,anddesperatelycanbeexcellent.努力只能及格...

JavaScript 中 some 与 every 方法的区别是什么?

大家好,很高兴又见面了,我是姜茶的编程笔记,我们一起学习前端相关领域技术,共同进步,也欢迎大家关注、点赞、收藏、转发,您的支持是我不断创作的动力在JavaScript中,Array.protot...

10个高效的Python爬虫框架,你用过几个?

小型爬虫需求,requests库+bs4库就能解决;大型爬虫数据,尤其涉及异步抓取、内容管理及后续扩展等功能时,就需要用到爬虫框架了。下面介绍了10个爬虫框架,大家可以学习使用!1.Scrapysc...

12个高效的Python爬虫框架,你用过几个?

实现爬虫技术的编程环境有很多种,Java、Python、C++等都可以用来爬虫。但很多人选择Python来写爬虫,为什么呢?因为Python确实很适合做爬虫,丰富的第三方库十分强大,简单几行代码便可实...

pip3 install pyspider报错问题解决

运行如下命令报错:>>>pip3installpyspider观察上面的报错问题,需要安装pycurl。是到这个网址:http://www.lfd.uci.edu/~gohlke...

PySpider框架的使用

PysiderPysider是一个国人用Python编写的、带有强大的WebUI的网络爬虫系统,它支持多种数据库、任务监控、项目管理、结果查看、URL去重等强大的功能。安装pip3inst...

「机器学习」神经网络的激活函数、并通过python实现激活函数

神经网络的激活函数、并通过python实现whatis激活函数感知机的网络结构如下:左图中,偏置b没有被画出来,如果要表示出b,可以像右图那样做。用数学式来表示感知机:上面这个数学式子可以被改写:...