Python开发利器之VS Code
Python官方提供了一个Python集成开发环境(IDE): IDLE (Integrated Development and Learning Environment)。
它提供了一个图形用户界面,可以让开发者编写、调试和执行Python程序。IDLE包含Python解释器、代码编辑器、调试器和文件浏览器等工具。IDLE 非常适合初学者和小规模项目的开发。
在安装完Python之后, IDLE 也就默认安装了, 可以在“开始”菜单中找到。
启动之后的界面如下:
可以看到,IDLE 的功能相对简单,如果要开发大型项目, 可以考虑使用VS Code。
VS Code 开发Python之步骤
-
安装Python
Python目前的最新版本是3.11.5, 可以到如下地址下载:
https://www.python.org/ftp/python/3.11.5/python-3.11.5-amd64.exe
下载后, 双击点击安装就可以了。 -
安装VS Code 的Python插件
打开VS Code之后,在插件搜索 Python
点击 “Install” 进行安装。
- 开始编程
VS Code 的Python插件,对Python语言提供了丰富的支持(适用于该语言的所有受支持版本:>=3.7),包括IntelliSense(Pylance)、linting、调试、代码导航、代码格式化、重构、变量资源管理器、测试资源管理器等功能。
Pylance
Python 扩展将自动安装 Pylance 扩展, 也可以卸载。
IntelliSense 是很多 IDEs(集成开发环境)和代码编辑器(如 Visual Studio Code)内置的一种代码自动完成和提示的特性。通过使用 IntelliSense,开发者不需要记住库和API的所有细节,也能提高代码编写的速度和准确性。
特别的,Pylance 是 Visual Studio Code 中的一个 Python 语言服务插件,提供了快速、高效的语法分析和语义分析,为 Python 开发者带来丰富的 IntelliSense 功能,包括:
-
自动完成:当你输入代码时,Pylance 可以提供函数、方法、变量、关键字等的自动完成列表。
-
实时错误检查:Pylance 可以高亮显示语法错误和潜在问题,甚至在你运行代码之前。
-
类型推断:Pylance 能够推断 Python 代码中变量的类型,提供更准确的代码提示。
-
函数签名提示:当你调用一个函数或方法时,Pylance 可以显示这个函数或方法的签名(包含参数名和类型)。
-
代码格式化:你可以使用 Pylance 来自动格式化你的代码,保持代码风格的一致性。
-
导入模块时的自动完成和导航到定义:Pylance 可以在你导入模块时提供自动完成,并且可以直观地跳转到符号的定义。
Pylance 和 Visual Studio Code 配合使用,可以对 Python 代码提供强大的 IntelliSense 支持,帮助提升 Python 开发的效率。
Linting
Linting 是一种对源代码进行静态分析的方法,它主要用于查找潜在的错误、不符合编码规范的代码以及其他可能的问题。
Linting 工具(也称为 “linter”)通常会检测以下几类问题:
- 语法错误:这可能是程序员在编程时不小心产生的错误,如括号没有配对、缺失必需的分隔符等。
- 代码风格不一致:包括缩进不正确、变量命名不规范、多余的空格等。正确的代码风格可以使你的代码更易读、更易维护。
- 潜在的逻辑错误:例如,赋值操作 (
=
) 被错误地写成了比较操作 (==
)。 - 未使用的变量或函数:这些未使用的代码可能会使人困惑,且占用额外的空间。
各种编程语言都有对应的常用的 linting 工具,例如对于 JavaScript,有 ESLint 和 JSHint;对于 Python,有 pylint 和 flake8;对于 C 或 C++,有 cpplint 和 clang-tidy。
Linting 通常会集成到 IDEs 或编辑器中,如 Visual Studio Code、Sublime Text、Atom 等,它们会在你写代码时实时进行 linting 并立即反馈问题,也可以在代码提交前作为持续集成(CI)流程的一部分进行 linting,以确保所有提交的代码符合预期的质量标准。
Debugging
Debugging 是一个在软件开发中查找和修复程序错误或缺陷(通常称为 “bug”)的过程。这个过程通常涉及识别问题存在的位置(或说出现了什么问题),然后尝试理解为什么会出现这个问题,并找出解决办法。
常用的调试工具和技术包括:
-
断点(Breakpoints):断点允许程序在特定的位置暂停执行,然后可以检查此时程序的状态和变量的值。这是一种很直观和有效的调试手段。
-
单步运行(Stepping):单步运行允许你逐行或逐语句执行程序,可以更清楚地看到每一步操作后程序的变化。
-
日志(Logging):日志是在程序运行过程中收集和记录信息的方法。这些信息可以包括程序执行的进度、用户的操作、错误信息等。
-
监控变量(Variable watch):一些调试工具允许你 “监控” 一个或多个变量的值,当这个变量的值改变时,调试工具会提示你。
-
异常处理:你可以设置调试工具在遇到特定的异常或错误时暂停程序,然后查看引发异常的代码位置和背景情况。
很多 IDE(集成开发环境)和代码编辑器(如 Visual Studio Code、Eclipse、PyCharm 等)都内置了强大的调试工具,支持上述的各种调试功能。此外,一些编程语言也提供了命令行调试工具,例如 Python 的 pdb 或 Node.js 的 debugger。
code navigation - 代码导航
代码导航指的是在源代码中快速定位和移动的能力,这是集成开发环境(IDE)和文本编辑器中的一个重要特性,用以提高编程效率。以下是一些常见的代码导航功能:
-
跳转到定义:这个功能可以直接跳转到一个变量、函数或类的定义处。
-
查找引用/引用视图:这个功能列出所有对特定变量、函数或类的引用。
-
文件导航:通过文件名快速打开文件,或在打开的文件中切换。
-
符号导航:在当前文件或整个工程中按符号名(例如函数名或变量名)快速跳转。
-
代码折叠/展开:隐藏或显示代码块,使整个代码更简洁,更容易理解。
-
行号导航:输入行号并转至特定行。
-
导航历史:返回到前面查看过的代码位置或向前前进到后面浏览过的位置。
-
面包屑导航:在顶部显示当前位置的路径,可以点击路径中的任何级别到达对应的位置。
-
大纲视图:显示文件或工程的结构视图,如所有的类、方法和变量等。
这些代码导航功能在大多数现代IDE和代码编辑器中,如 Visual Studio Code、IntelliJ IDEA、Eclipse、Atom 和 Sublime Text 等,都有提供。这些功能对于理解、修改和维护大型代码库尤其有用。
code formatting - 代码格式化
代码格式化是一种改变源代码格式以提高可读性和一致性的过程。这个过程通常会调整如下一些方面:
-
缩进:代码缩进对于区分代码块和保持代码可读性非常重要。例如,一些编程语言(如 Python)规定必须使用一致的缩进。
-
行长度:一行代码的长度通常也会有限制,防止一行代码过长。
-
空格和换行:在运算符、声明、函数参数等之间添加适当的空格和换行,以提高代码的可读性。
-
大括号位置:在一些编程语言(如 JavaScript 或 C++)中,大括号
{}
的位置和样式(比如,是否在新的一行打开大括号,或是与上一行的语句在同一行打开等)也会被规定。 -
声明排序:有时候,我们会对变量、函数、类申明的顺序进行排序,使得代码更有逻辑性和可预测性。
-
移除无效代码:此过程可以移除一些无效的空格、未被使用的变量和函数,以及其他冗余的代码片段。
很多 IDE 和代码编辑器(如 Visual Studio Code、IntelliJ IDEA、Eclipse 等)都内置了代码格式化的工具,通常只需一键(或者自动)格式化。此外,还有一些可以单独使用的格式化工具,如 Prettier(主要用于 JavaScript)和 Black(用于 Python)。这些工具可以被集成到构建或提交代码的流程中,以确保所有的代码都是格式化过的。
refactoring - 重构
重构(Refactoring)是一种软件开发过程,目标是改进代码的内部结构,但不改变其外部行为。简单来说,经过重构的代码应该可以更好地被理解、被修改和被维护,但其功能和行为都没有改变。
重构可以涉及到以下几种操作:
-
代码清理:移除未使用的变量和函数,简化复杂的表达式和调用。
-
重命名变量和函数:使用更易理解的名称以提高代码的可读性。
-
抽取代码:把长的函数或复杂的代码块分解为更小且更简单的函数。
-
移动代码:将代码块移动到它更合适的位置,如将一个函数从一个类移动到另一个类。
-
改进数据结构:优化数据结构,例如将基本类型替换为类或对象,以改善抽象。
在进行重构时,重要的是要确保你有一套可靠的测试集,这样你可以在每次重构后都运行测试以确保你没有改变任何功能。许多IDE(如 IntelliJ IDEA 和 Visual Studio Code)都提供了强大的重构工具,在保证重构安全和准确的同时提高重构效率。
至于何时进行重构以及何时停止重构,常引用 Martin Fowler 的观点:你应该在看到可以改进的代码时就进行一小部分的重构,并且持续进行这样的改进。重构是一个持续且循序渐进的过程,而不是一次性的大改动。
variable explorer - 变量资源管理器
变量浏览器(Variable Explorer)是一种编程工具,主要用于查看、管理和修改程序运行时的变量。在调试和数据分析过程中,这个功能可以帮助你理解和追踪你的代码状态。
在变量浏览器中,你通常可以看到以下信息:
- 变量名:变量的标识符。
- 类型:变量的数据类型,如整数、浮点数、字符串、列表、字典等。
- 值:变量的当前值。
一些高级的变量浏览器还会提供更多功能,例如:
- 修改变量值:你可以直接在变量浏览器中修改变量的值,这对于调试和试验特别有用。
- 数据视图:复杂数据结构(如列表、字典和数据框等)可能会以特定的视图显示,以便于理解和管理。
- 过滤和排序变量:当你有很多变量需要管理时,过滤和排序功能可以帮助你找出你感兴趣的变量。
许多集成开发环境(IDE)和代码编辑器都提供了变量浏览器,例如:
- 在 Python 的Spyder IDE,变量浏览器是其主要功能之一,非常适合进行数据分析和科学计算。
- 在 Visual Studio Code,可以通过安装扩展 (如 Python extension) 获得变量浏览器。
- 在 RStudio(面向 R 语言的 IDE),变量浏览器是默认提供的功能。
test explorer -测试资源管理器
测试浏览器(Test Explorer)是一种在集成开发环境(IDE)或代码编辑器中的界面,用于运行和管理自动化的测试用例。测试浏览器给开发者提供一个可视化界面来运行、查看测试结果并追踪测试覆盖率。这对于维护代码质量和确保代码更改不影响已有功能非常有帮助。
具体来说,测试浏览器提供了以下功能:
-
运行和调试测试:你可以选择运行所有的测试用例,或仅运行选中的部分测试用例,或者进行调试模式运行测试。
-
查看测试结果:你可以清楚地看到哪些测试通过了,哪些测试失败了,以及失败的原因。
-
管理测试配置:为了满足不同的测试场景,你可以配置多个测试环境并在它们之间快速切换。
-
追踪测试覆盖率:一些测试浏览器会集成编程语言的代码覆盖库来追踪测试覆盖率,帮助你识别没有被测试覆盖的代码。
许多流行的 IDE 和代码编辑器都提供了测试浏览器,例如:
-
在 Visual Studio Code 中,可以使用 Test Explorer UI 插件和对应语言的测试插件(如 Python Test Explorer for Python)。
-
IntelliJ IDEA、PyCharm 等 JetBrains 的 IDE 内置了强大的测试工具。
-
Eclipse 对 Java 的 JUnit 测试和其他类型的测试有良好的支持。
VSCode.dev
VSCode.dev 是 Visual Studio Code 的一个在线版本。这是一个基于 Web 的代码编辑器,它在浏览器中提供了 Visual Studio Code 的大部分功能。
这是一个强大的工具,你无需在本地安装任何软件或进行复杂的设置,只需打开浏览器并访问 vscode.dev,就可以开始编码。
使用 VSCode.dev,你可以:
编辑本地文件和文件夹,只需将它们拖放到浏览器窗口。
通过针对各种语言的高级 IntelliSense,得到代码提示和自动补全的支持。
使用VS Code的丰富扩展生态,来获取更多的功能和定制性。
利用同步设置功能,在不同的设备和浏览器之间同步你的使用习惯和设置。
然而,目前 VSCode.dev 仍然不支持运行和调试代码,但微软已经计划在未来的版本中添加这个功能。
总的来说,无论你是在路上需要快速修改代码,还是想把代码编辑环境带到任何你去的地方,VSCode.dev 都是一个很好的选择。
Jupyter
Jupyter 是一个开源的交互式计算环境,它允许你在浏览器中创建和共享包含实时代码、方程式、可视化图形和文本的文档。这种文档被称为 Jupyter 笔记本。
Jupyter 支持40多种编程语言,包括 Python、JavaScript、Scala、R等。
下面是 Jupyter 提供的一些主要功能:
- 交互式编程:你可以写代码,然后即刻运行看到结果,这非常适合探索性的数据分析。
- 数据可视化:你可以创建丰富的交互式图形,并且直接在笔记本中查看。
- Markdown 支持:你可以在代码旁边添加富文本说明,包括标题、列表、图表、链接、图像等。
- LaTeX 公式:你可以使用 LaTeX 语法在笔记本中插入数学公式,使得科学计算更直观。
- 分享和导出:你可以将笔记本分享到 GitHub,也可以导出为 HTML、PDF、Markdown 等格式。
Jupyter 是数据科学家、研究人员和教育者们最受欢迎的工具之一。它可以帮助你更好地组织代码和思路,以及更方便地展示你的成果。
参考
- VS Code下载地址:https://code.visualstudio.com/
- Python安装介绍: https://code.visualstudio.com/docs/python/python-tutorial
相关文章:

Python开发利器之VS Code
Python官方提供了一个Python集成开发环境(IDE): IDLE (Integrated Development and Learning Environment)。 它提供了一个图形用户界面,可以让开发者编写、调试和执行Python程序。IDLE包含Python解释器、代码编辑器、调试器和文件…...
【Axure视频教程】输入框控制滑动评分条
今天教大家在Axure里如何制作输入框控制滑动评分条的原型模板,可以通过鼠标左右拖动滑块,也可以点击条形让滑块移动到指定位置,标签和输入框里会返回具体的分值,分值由滑块所在的位置动态计算而成;也可以在输入框里输入…...
【学习笔记】[AGC064C] Erase and Divide Game
有点难😅,看到比自己低一级的选手场切这道题就更绷不住了😇 考虑 从低到高位 建立 trie \text{trie} trie 树,但是因为是对反串建立的,所以编号连续的点在 trie \text{trie} trie 树上的位置是分散的😅 …...
算法通关村-----数组中元素出现次数问题
数组中出现次数超过一半的数字 问题描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。你可以假设数组是非空的,并且给定的数组总是存在多数元素。详见剑指offer39 问题分析 最直接的方式就是使用hashMap,遍历给定数组,…...
Qt-键盘消息的传递-键盘消息的获取-C++
文章目录 1.概述2.焦点3.强制获取键盘消息4.键盘常用组合方法5.总结 1.概述 QKeyEvent 类用来描述一个键盘事件。当键盘按键被按下或者被释放时,键盘事件便会被发送给拥有键盘输人焦点的部件。 QKeyEvent 的 key() 函数可以获取具体的按键,对于 Qt 中给…...

数据结构与算法(五)--链表概念以及向链表添加元素
一、前言 今天我们学习另一种非常重要的线性数据结构–链表,之前我们已经学习了三种线性数据结构,分别是动态数组,栈和队列。其中队列我们额外学习了队列的另一种实现方式–循环队列。其实我们自己实现过前三个数据结构就知道,它…...

计算机视觉与深度学习-图像分割-视觉识别任务02-目标检测-【北邮鲁鹏】
目录标题 参考目标检测定义深度学习对目标检测的作用单目标检测多任务框架多任务损失预训练模型姿态估计 多目标检测问题滑动窗口(Sliding Window)滑动窗口缺点 AdaBoost(Adaptive Boosting)参考 区域建议 selective search 思想慢…...

Flink——Flink检查点(checkpoint)、保存点(savepoint)的区别与联系
Flink checkpoint Checkpoint是Flink实现容错机制最核心的功能,能够根据配置周期性地基于Stream中各个Operator的状态来生成Snapshot,从而将这些状态数据定期持久化存储下来,从而将这些状态数据定期持久化存储下来,当Flink程序一…...

[篇五章五]-如何禁用 Windows Defender-我的创作纪念日
################################################## 目录 禁用掉烦人的 Windows Defender 在本地组策略编辑器中禁用 Windows Defende 关闭 Microsoft Defender 防病毒 禁止 Defender 开机自动运行 重新激活 Windows Defender #######################################…...

什么情况下使用微服务?
单体架构图参考网络: 1. 什么是单体应用 单体应用就是将应用程序的所有功能都打包成一个独立的单元,最终以一个WAR包或JAR包存在,没有外部的任何依赖,里面包含DAO、Service、UI等所有的逻辑。 优点: 1&…...

【Linux】Ubuntu美化主题【教程】
【Linux】Ubuntu美化主题【教程】 文章目录 【Linux】Ubuntu美化主题【教程】1. 安装优化工具Tweak2.下载自己喜欢的主题3. 下载自己喜欢的iconReference 1. 安装优化工具Tweak 首先安装优化工具Tweak sudo apt-get install gnome-tweak-tool安装完毕后在菜单中打开Tweak 然后…...
spring-boot2.x,使用EnableWebMvc注解导致的自定义HttpMessageConverters不可用
在json对象转换方面,springboot默认使用的是MappingJackson2HttpMessageConverter。常规需求,在工程中使用阿里的FastJson作为json对象的转换器。 FastJson SerializerFeatures WriteNullListAsEmpty :List字段如果为null,输出为[],而非nu…...

2023-09-20 Android CheckBox 让文字显示在选择框的左边
一、CheckBox 让文字在选择框的左边 ,在布局文件里面添加下面一行就可以。 android:layoutDirection"rtl" 即可实现 android:paddingStart"10dp" 设置框文间的间距 二、使用的是left to right <attr name"layoutDirection">&…...
目标检测YOLO实战应用案例100讲-基于改进YOLOv5的口罩人脸检测
目录 前言 国内外研究现状 目标检测研究发展 国内外口罩人脸检测研究现状...

CentOS7 yum安装报错:“Could not resolve host: mirrorlist.centos.org; Unknown error“
虚拟机通过yum安装东西的时候弹出这个错误: 1、查看安装在本机的网卡 网卡ens33处于disconnected的状态 nmcli d2、输入命令: nmtui3、选择网卡,然后点击edit 4、移动到Automatically connect按空格键选择,然后移动到OK键按空格…...
关于token续签
通常我们会对token设置一个有效期,于是,就有了token续签的问题。由于token并没有续时机制,如果不能及时的替换掉过期的token,可能会拦截用户正常的请求,用户只能重新登录,如果提交的信息量很大,…...

淘宝分布式文件存储系统( 二 ) -TFS
淘宝分布式文件存储系统( 二 ) ->>TFS 目录 : 大文件存储结构哈希链表的结构文件映射原理及对应的API文件映射头文件的定义 大文件存储结构 : 采用块(block)文件的形式对数据进行存储 , 分成索引块,主块 , 扩展块 。所有的小文件都是存放到主块中的 ,扩展块…...

Java中synchronized:特性、使用、锁机制与策略简析
目录 synchronized的特性互斥性可见性可重入性 synchronized的使用方法synchronized的锁机制常见锁策略乐观锁与悲观锁重量级锁与轻量级锁公平锁与非公平锁可重入锁与不可重入锁自旋锁读写锁 synchronized的特性 互斥性 synchronized确保同一时间只有一个线程可以进入同步块或…...
记一次clickhouse手动更改分片数异常
背景:clickhouse中之前是1分片1副本,随着数据量增多,想将分片数增多,于是驻场人员手动添加了分片数的节点信息 <clickhouse><!-- 集群配置 --><clickhouse_remote_servers><feihuang_ck_cluster><sha…...

深度学习论文: ISTDU-Net:Infrared Small-Target Detection U-Net及其PyTorch实现
深度学习论文: ISTDU-Net:Infrared Small-Target Detection U-Net及其PyTorch实现 ISTDU-Net:Infrared Small-Target Detection U-Net PDF: https://doi.org/10.1109/LGRS.2022.3141584 PyTorch代码: https://github.com/shanglianlm0525/CvPytorch PyTo…...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...

手游刚开服就被攻击怎么办?如何防御DDoS?
开服初期是手游最脆弱的阶段,极易成为DDoS攻击的目标。一旦遭遇攻击,可能导致服务器瘫痪、玩家流失,甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案,帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来
一、破局:PCB行业的时代之问 在数字经济蓬勃发展的浪潮中,PCB(印制电路板)作为 “电子产品之母”,其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透,PCB行业面临着前所未有的挑战与机遇。产品迭代…...

Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问(基础概念问题) 1. 请解释Spring框架的核心容器是什么?它在Spring中起到什么作用? Spring框架的核心容器是IoC容器&#…...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式
今天是关于AI如何在教学中增强学生的学习体验,我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育,这并非炒作,而是已经发生的巨大变革。教育机构和教育者不能忽视它,试图简单地禁止学生使…...
Caliper 配置文件解析:fisco-bcos.json
config.yaml 文件 config.yaml 是 Caliper 的主配置文件,通常包含以下内容: test:name: fisco-bcos-test # 测试名称description: Performance test of FISCO-BCOS # 测试描述workers:type: local # 工作进程类型number: 5 # 工作进程数量monitor:type: - docker- pro…...
MySQL 主从同步异常处理
阅读原文:https://www.xiaozaoshu.top/articles/mysql-m-s-update-pk MySQL 做双主,遇到的这个错误: Could not execute Update_rows event on table ... Error_code: 1032是 MySQL 主从复制时的经典错误之一,通常表示ÿ…...

ubuntu系统文件误删(/lib/x86_64-linux-gnu/libc.so.6)修复方案 [成功解决]
报错信息:libc.so.6: cannot open shared object file: No such file or directory: #ls, ln, sudo...命令都不能用 error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory重启后报错信息&…...

Windows电脑能装鸿蒙吗_Windows电脑体验鸿蒙电脑操作系统教程
鸿蒙电脑版操作系统来了,很多小伙伴想体验鸿蒙电脑版操作系统,可惜,鸿蒙系统并不支持你正在使用的传统的电脑来安装。不过可以通过可以使用华为官方提供的虚拟机,来体验大家心心念念的鸿蒙系统啦!注意:虚拟…...