Python官方提供了一个Python集成开发环境(IDE): IDLE (Integrated Development and Learning Environment)。
它提供了一个图形用户界面,可以让开发者编写、调试和执行Python程序。IDLE包含Python解释器、代码编辑器、调试器和文件浏览器等工具。IDLE 非常适合初学者和小规模项目的开发。
在安装完Python之后, IDLE 也就默认安装了, 可以在“开始”菜单中找到。
![](https://img.kancloud.cn/1e/a1/1ea188ea43b1fd80c9b1b72dfed55e83_282x187.png)
启动之后的界面如下:
![](https://img.kancloud.cn/05/c1/05c19e1504d15d370666027fcab65088_941x656.png)
可以看到,IDLE 的功能相对简单,如果要开发大型项目, 可以考虑使用VS Code。
## VS Code 开发Python之步骤
1. 安装Python
Python目前的最新版本是3.11.5, 可以到如下地址下载:
[https://www.python.org/ftp/python/3.11.5/python-3.11.5-amd64.exe](https://www.python.org/ftp/python/3.11.5/python-3.11.5-amd64.exe)
下载后, 双击点击安装就可以了。
2. 安装VS Code 的Python插件
打开VS Code之后,在插件搜索 Python
![](https://img.kancloud.cn/81/96/81968717f1b5afc7dac18229ec5693b6_599x366.png)
点击 “Install” 进行安装。
3. 开始编程
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")的过程。这个过程通常涉及识别问题存在的位置(或说出现了什么问题),然后尝试理解为什么会出现这个问题,并找出解决办法。
常用的调试工具和技术包括:
1. **断点(Breakpoints)**:断点允许程序在特定的位置暂停执行,然后可以检查此时程序的状态和变量的值。这是一种很直观和有效的调试手段。
2. **单步运行(Stepping)**:单步运行允许你逐行或逐语句执行程序,可以更清楚地看到每一步操作后程序的变化。
3. **日志(Logging)**:日志是在程序运行过程中收集和记录信息的方法。这些信息可以包括程序执行的进度、用户的操作、错误信息等。
4. **监控变量(Variable watch)**:一些调试工具允许你 "监控" 一个或多个变量的值,当这个变量的值改变时,调试工具会提示你。
5. **异常处理**:你可以设置调试工具在遇到特定的异常或错误时暂停程序,然后查看引发异常的代码位置和背景情况。
很多 IDE(集成开发环境)和代码编辑器(如 Visual Studio Code、Eclipse、PyCharm 等)都内置了强大的调试工具,支持上述的各种调试功能。此外,一些编程语言也提供了命令行调试工具,例如 Python 的 pdb 或 Node.js 的 debugger。
## code navigation - 代码导航
代码导航指的是在源代码中快速定位和移动的能力,这是集成开发环境(IDE)和文本编辑器中的一个重要特性,用以提高编程效率。以下是一些常见的代码导航功能:
1. **跳转到定义**:这个功能可以直接跳转到一个变量、函数或类的定义处。
2. **查找引用/引用视图**:这个功能列出所有对特定变量、函数或类的引用。
3. **文件导航**:通过文件名快速打开文件,或在打开的文件中切换。
4. **符号导航**:在当前文件或整个工程中按符号名(例如函数名或变量名)快速跳转。
5. **代码折叠/展开**:隐藏或显示代码块,使整个代码更简洁,更容易理解。
6. **行号导航**:输入行号并转至特定行。
7. **导航历史**:返回到前面查看过的代码位置或向前前进到后面浏览过的位置。
8. **面包屑导航**:在顶部显示当前位置的路径,可以点击路径中的任何级别到达对应的位置。
9. **大纲视图**:显示文件或工程的结构视图,如所有的类、方法和变量等。
这些代码导航功能在大多数现代IDE和代码编辑器中,如 Visual Studio Code、IntelliJ IDEA、Eclipse、Atom 和 Sublime Text 等,都有提供。这些功能对于理解、修改和维护大型代码库尤其有用。
## code formatting - 代码格式化
代码格式化是一种改变源代码格式以提高可读性和一致性的过程。这个过程通常会调整如下一些方面:
1. **缩进**:代码缩进对于区分代码块和保持代码可读性非常重要。例如,一些编程语言(如 Python)规定必须使用一致的缩进。
2. **行长度**:一行代码的长度通常也会有限制,防止一行代码过长。
3. **空格和换行**:在运算符、声明、函数参数等之间添加适当的空格和换行,以提高代码的可读性。
4. **大括号位置**:在一些编程语言(如 JavaScript 或 C++)中,大括号 `{}` 的位置和样式(比如,是否在新的一行打开大括号,或是与上一行的语句在同一行打开等)也会被规定。
5. **声明排序**:有时候,我们会对变量、函数、类申明的顺序进行排序,使得代码更有逻辑性和可预测性。
6. **移除无效代码**:此过程可以移除一些无效的空格、未被使用的变量和函数,以及其他冗余的代码片段。
很多 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/](https://code.visualstudio.com/)
* Python安装介绍: [https://code.visualstudio.com/docs/python/python-tutorial](https://code.visualstudio.com/docs/python/python-tutorial)
*****
*****
- 前言
- 1.入门篇
- Python介绍
- 安装与使用
- Python开发利器之VS Code
- 模块安装
- 命令行
- 一次Python无法安装模块的问题探索与解决之旅
- 命令运行
- Conda
- 下载地址
- 2.基础篇
- 基础语法
- 输入与输出
- with as的用法
- 注释
- Python命令行参数
- 编码
- 变量类型
- 列表遍历
- 运算符
- 表达式语句
- 条件
- 循环
- 日期和时间
- 函数
- 高级语法
- @符号-装饰器
- 模块和包
- name
- init.py
- 错误和异常
- 面向对象
- 3.专题篇
- 常用功能
- Python 字符串连接
- python web
- Python CGI编程
- Python OAuth2
- 认证 Flask-HTTPAuth
- 常用命令
- 内置函数
- dir()
- print(f)
- 标准模块
- sys
- pickle-数据序列化
- os
- IO(输入输出)
- 键盘输入
- 文件读写
- 测试
- Python测试框架之pytest快速入门
- pytest-bdd快速示例和问题解决
- 基于pytest-bdd的项目目录结构和命名规范
- python BDD 的相关概念
- Behave介绍和快速示例
- Python BDD之Behave测试报告
- Python BDD 框架比较之 pytest-bdd vs behave
- pytest进阶
- Flask + pytest测试
- 参考网址
- pytest-bdd进阶
- hehave进阶
- 测试路径
- python + selunium
- HTML 根据多层CSS 查找元素
- 等待执行
- 使用text 查找 span
- pytest如何在控制台输出
- 4.问题篇
- pip pip3 及区别
- TypeError: can only concatenate str (not "NoneType") to str
- 5.实战篇
- matplotlib-绘图包
- 导入类
- 命名规范
- 模块查找
- 6.进阶篇
- Flask
- Flask介绍
- Flask扩展模块
- Flask-Login
- 问题
- Jinja2
- Flask-RESTful
- Flask-JWT-Extended
- WSGI
- Flask-SQLAlchemy
- 部署
- Flask VS Django
- Flask Web
- Flask + Vue
- Flask实战
- Flask 标准目录结构
- Blueprints
- 参考
- FastAPI 测试
- https 证书 Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate