在 Visual Studio Code 中编辑 Python

在 Visual Studio Code 中编辑 Python

原文:https://code.visualstudio.com/docs/python/editing#_formatting

Python 扩展提供了许多用于在 Visual Studio Code 中编辑 Python 源代码的功能:

另请参阅掉毛Jupyter支持

自动完成和智能感知#

为当前工作文件夹中的所有文件和安装在标准位置的 Python 包提供自动完成和智能感知。

编辑时,您可以右键单击不同的标识符以利用几个方便的命令

  • Go to Definition ( F12 ) 从您的代码跳转到定义对象的代码。当您使用库时,此命令很有用。
  • Peek Definition ( Alt+F12 ) 类似,但直接在编辑器中显示定义(在编辑器窗口中留出空间以避免遮挡任何代码)。按Escape关闭 Peek 窗口或使用右上角的x
  • Go to Declaration跳转到代码中声明变量或其他对象的位置。
  • Peek 声明类似,但直接在编辑器中显示声明。同样,使用Escape或右上角的x关闭 Peek 窗口。

自定义 IntelliSense 行为#

要自定义分析引擎的行为,请参阅代码分析设置自动完成设置

您还可以自定义自动完成和 IntelliSense 的一般行为,甚至完全禁用这些功能。请参阅自定义 IntelliSense

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kd0PAXrE-1626945081360)(https://code.visualstudio.com/assets/docs/python/editing/python-editing.gif)]

提示:查看VS CodeIntelliCode 扩展(预览版)。IntelliCode 为 Python 中的 IntelliSense 提供了一组 AI 辅助功能,例如根据当前代码上下文推断最相关的自动完成。有关更多信息,请参阅IntelliCode for VS Code 常见问题解答

为自定义包位置启用 IntelliSense #

要为安装在其他非标准位置的包启用 IntelliSense,请将这些位置添加到python.autoComplete.extraPaths设置文件的集合中(默认集合为空)。例如,您可能已经安装了安装在自定义位置的 Google App Engine,app.yaml如果您使用 Flask ,则在 中指定。在这种情况下,您可以按如下方式指定这些位置:

视窗:

"python.autoComplete.extraPaths": [
    "C:/Program Files (x86)/Google/google_appengine",
    "C:/Program Files (x86)/Google/google_appengine/lib/flask-0.12"]

macOS/Linux:

"python.autoComplete.extraPaths": [
    "~/.local/lib/Google/google_appengine",
    "~/.local/lib/Google/google_appengine/lib/flask-0.12" ]

python.autoComplete.addBrackets设置(默认false)还决定了 VS Code()在自动补全函数名称时是否自动添加括号 ( )。例如,如果您设置addBracketstrue

  "python.autoComplete.addBrackets": true,

然后写import os后跟os.getc,你会看到自动完成os.getcwd。选择自动完成添加os.getcwd()到您的源代码并将光标放在括号内。当设置为 false 时,只os.getcwd添加到文件中。

有关 IntelliSense 的更多信息,请参阅IntelliSense

故障排除#

如果自动完成和 IntelliSense 不适用于自定义模块,请检查以下原因:

原因解决方案
python解释器的路径不正确检查pythonPath设置。如果您进行更正,请重新启动 VS Code。
自定义模块位于非标准位置(未使用 pip 安装)。将位置添加到python.autoComplete.extraPaths设置中并重新启动 VS Code。

快速修复#

添加导入快速修复允许您快速完成导入语句。首先在编辑器中输入一个包名,你会注意到一个代码操作可用于自动完成源代码行(只要你在环境中安装了模块)。将鼠标悬停在文本上(用波浪线标记),然后在出现时选择 Code Action 灯泡。然后,您可以从潜在导入列表中进行选择。请注意,以下示例中的功能由 Pylance 语言服务器提供。

添加导入

添加导入代码操作还识别以下常见 Python 包的一些流行缩写:numpy作为 np、tensorflow作为 tf、pandas作为 pd、matplotlib.pyplot作为 plt matplotlib、、作为 mpl、math作为 m、scipi.io作为 spio 和scipy作为 sp、panel作为 pn 和holoviews作为高压

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NneO8PnX-1626945081382)(https://code.visualstudio.com/assets/docs/python/editing/packageAbbreviations.gif)]

导入建议列表的顺序是包(或模块)的导入语句在顶部,然后是来自指定包的附加模块和/或成员(类、对象等)的语句。

在终端(REPL)中运行选择/行#

Python中:在Python的终端运行选择/ Line命令(Shift + Enter键)是一个简单的方式,采取选择的任何代码,或在当前行的代码,如果没有选择,并在Python航站楼运行。在编辑器中的选择的上下文菜单上也提供了相同的在 Python 终端运行选择/行命令中。

VS Code 会根据选择的第一个非空行自动删除缩进,并相应地向左移动所有其他行。

在终端/REPL 中运行的源代码是累积的,直到终端的当前实例关闭。

如有必要,该命令会打开 Python 终端;您还可以直接使用Python: Start REPL命令打开交互式 REPL 环境。(初始启动可能需要一些时间,特别是如果您运行的第一个语句是import.)

在第一次使用Python: Run Selection/Line in Python Terminal命令时,VS Code 可能会在环境准备好之前将文本发送到 REPL,在这种情况下,不会运行选择或行。如果遇到此行为,请在 REPL 加载完成后再次尝试该命令。

格式化#

通过对行间距、缩进、操作符周围的间距等应用特定的规则和约定,格式化使代码更容易被人类阅读(参见autopep8页面上的示例)。格式化不会影响代码本身的功能。(另一方面,Linting分析代码中常见的语法、风格和功能错误以及可能导致错误的非常规编程实践。尽管格式化和 linting 之间有一些重叠,但这两种功能是互补的。)

Python 扩展支持使用autopep8(默认)、blackyapf 进行源代码格式化。

常规格式设置#

设置 (python.formatting.)默认值描述
提供者"autopep8"指定要使用的格式化程序,“autopep8”、“yapf”或“black”。

特定于格式化程序的设置#

以下设置适用于各个格式化程序。Python 扩展在当前中pythonPath查找格式化程序。要在另一个位置使用格式化程序,请在适当的自定义路径设置中指定该位置。该pip install命令可能需要提升。

格式化程序安装步骤参数设置 (python.formatting.)自定义路径设置 (python.formatting.)
autopep8pip install pep8 pip install --upgrade autopep8autopep8Argsautopep8Path
黑色(见注释)pip 安装黑色黑色参数黑色路径
亚普夫pip 安装 yapfyapfArgs路径

注意:默认情况下,当 Python 2 环境处于活动状态时,无法安装 Black 格式化程序。尝试这样做可能会显示消息“未安装黑色格式化程序。安装?”。如果您尝试安装 Black 作为响应,则会出现另一条消息,提示“找不到满足 black 要求的版本’找不到黑色的匹配发行版。”

要解决此问题并在 Python 2 中使用 Black 格式化程序,请首先在 Python 3 环境中安装 Black。然后将python.formatting.blackPath设置设置为该安装位置。

使用自定义参数时,命令行上由空格分隔的参数字符串的每个顶级元素必须是 args 列表中的一个单独项目。例如:

"python.formatting.autopep8Args": ["--max-line-length", "120", "--experimental"],
"python.formatting.yapfArgs": ["--style", "{based_on_style: chromium, indent_width: 20}"],
"python.formatting.blackArgs": ["--line-length", "100"]

在第二个示例中,顶级元素{based_on_style: chromium, indent_width: 20}是包含在大括号中的单个值,因此该值内的空格不会描绘出单独的元素。

故障排除#

如果格式化失败,请检查以下可能的原因:

原因解决方案
python解释器的路径不正确。检查pythonPath设置。
当前环境中未安装格式化程序。打开命令提示符,导航到pythonPath设置中指定的位置,然后运行pip install格式化程序。
格式化程序的路径不正确。检查相应python.formatting.<formatter>Path设置的值。
格式化程序的自定义参数不正确。检查适当的python.formatting.<formatter>Path设置不包含参数,并且python.formatting.<formatter>Args包含单个顶级参数元素的列表,例如"python.formatting.yapfArgs": ["--style", "{based_on_style: chromium, indent_width: 20}"].
弹出警告信息 Black does not support the "Format Select" command.black不支持格式化代码部分,可以通过以下设置来防止"[python]": {"editor.formatOnPaste": false, "editor.formatOnSaveMode": "file"}

重构#

Python 扩展添加了以下重构命令:Extract VariableExtract MethodSort Imports

提取变量#

提取当前范围内所选文本的所有相似出现,并将其替换为变量。新方法被命名为newvariableNNNNNN 是一个随机数。

调用者:

  • 上下文菜单:右键单击一个选择并选择Extract Variable
  • 命令面板 ( Ctrl+Shift+P ),然后是Python 重构:提取变量
  • python.refactorExtractVariable命令分配键盘快捷键。

重构变量

提取方法#

提取当前范围内所选表达式或块的所有相似出现,并用方法调用替换它。新方法被命名为newmethodNNNNNN 是一个随机数。

调用者:

  • 上下文菜单:右键单击一个选择并选择Extract Method
  • 命令面板 ( Ctrl+Shift+P ),然后是Python 重构:提取方法
  • python.refactorExtractMethod命令分配键盘快捷键。

将代码重构为方法

排序进口#

Sort Imports 使用 isort 包将来自同一模块的特定导入合并到单个import语句中,并按import字母顺序组织语句。

调用者:

  • 在编辑器中右击并选择Sort Imports(不需要选择)
  • 命令面板 ( Ctrl+Shift+P ),然后是Python 重构:对导入进行排序
  • python.sortImports命令分配键盘快捷键

排序导入语句

isort 的自定义参数在python.sortImports.args设置中指定,其中每个顶级元素,在命令行上用空格分隔,是数组中的一个单独项目:

"python.sortImports.args": ["-rc", "--atomic"],

要使用自定义 isort 脚本,请使用python.sortImports.path设置来指定路径。

进一步的配置可以存储在.isort.cfg文件中,如isort 配置中所述

注意:对于那些从 isort4 迁移到 isort5 的人,一些 CLI 标志和配置选项已更改,请参阅项目的isort5 升级指南

下一步#

  • Linting - 启用、配置和应用各种 Python linter。
  • 调试- 学习在本地和远程调试 Python。
  • 测试- 配置测试环境并发现、运行和调试测试。
  • 基本编辑- 了解强大的 VS Code 编辑器。
  • 代码导航- 快速浏览源代码。
  • IntelliSense - 了解 IntelliSense 功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值