当前位置: 首页 > news >正文

Python开发利器之VS Code

Python官方提供了一个Python集成开发环境(IDE): IDLE (Integrated Development and Learning Environment)。
它提供了一个图形用户界面,可以让开发者编写、调试和执行Python程序。IDLE包含Python解释器、代码编辑器、调试器和文件浏览器等工具。IDLE 非常适合初学者和小规模项目的开发。

在安装完Python之后, IDLE 也就默认安装了, 可以在“开始”菜单中找到。
在这里插入图片描述

启动之后的界面如下:
在这里插入图片描述

可以看到,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
    下载后, 双击点击安装就可以了。

  2. 安装VS Code 的Python插件
    打开VS Code之后,在插件搜索 Python
    在这里插入图片描述

点击 “Install” 进行安装。

  1. 开始编程

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/
  • 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,遍历给定数组&#xff0c…...

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 让文字在选择框的左边 &#xff0c;在布局文件里面添加下面一行就可以。 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安装东西的时候弹出这个错误&#xff1a; 1、查看安装在本机的网卡 网卡ens33处于disconnected的状态 nmcli d2、输入命令&#xff1a; nmtui3、选择网卡&#xff0c;然后点击edit 4、移动到Automatically connect按空格键选择&#xff0c;然后移动到OK键按空格…...

关于token续签

通常我们会对token设置一个有效期&#xff0c;于是&#xff0c;就有了token续签的问题。由于token并没有续时机制&#xff0c;如果不能及时的替换掉过期的token&#xff0c;可能会拦截用户正常的请求&#xff0c;用户只能重新登录&#xff0c;如果提交的信息量很大&#xff0c;…...

淘宝分布式文件存储系统( 二 ) -TFS

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

Java中synchronized:特性、使用、锁机制与策略简析

目录 synchronized的特性互斥性可见性可重入性 synchronized的使用方法synchronized的锁机制常见锁策略乐观锁与悲观锁重量级锁与轻量级锁公平锁与非公平锁可重入锁与不可重入锁自旋锁读写锁 synchronized的特性 互斥性 synchronized确保同一时间只有一个线程可以进入同步块或…...

记一次clickhouse手动更改分片数异常

背景&#xff1a;clickhouse中之前是1分片1副本&#xff0c;随着数据量增多&#xff0c;想将分片数增多&#xff0c;于是驻场人员手动添加了分片数的节点信息 <clickhouse><!-- 集群配置 --><clickhouse_remote_servers><feihuang_ck_cluster><sha…...

深度学习论文: ISTDU-Net:Infrared Small-Target Detection U-Net及其PyTorch实现

深度学习论文: ISTDU-Net&#xff1a;Infrared Small-Target Detection U-Net及其PyTorch实现 ISTDU-Net&#xff1a;Infrared Small-Target Detection U-Net PDF: https://doi.org/10.1109/LGRS.2022.3141584 PyTorch代码: https://github.com/shanglianlm0525/CvPytorch PyTo…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)

HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

线程同步:确保多线程程序的安全与高效!

全文目录&#xff1a; 开篇语前序前言第一部分&#xff1a;线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分&#xff1a;synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分&#xff…...

centos 7 部署awstats 网站访问检测

一、基础环境准备&#xff08;两种安装方式都要做&#xff09; bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats&#xff0…...

css的定位(position)详解:相对定位 绝对定位 固定定位

在 CSS 中&#xff0c;元素的定位通过 position 属性控制&#xff0c;共有 5 种定位模式&#xff1a;static&#xff08;静态定位&#xff09;、relative&#xff08;相对定位&#xff09;、absolute&#xff08;绝对定位&#xff09;、fixed&#xff08;固定定位&#xff09;和…...

WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)

一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解&#xff0c;适合用作学习或写简历项目背景说明。 &#x1f9e0; 一、概念简介&#xff1a;Solidity 合约开发 Solidity 是一种专门为 以太坊&#xff08;Ethereum&#xff09;平台编写智能合约的高级编…...

如何在最短时间内提升打ctf(web)的水平?

刚刚刷完2遍 bugku 的 web 题&#xff0c;前来答题。 每个人对刷题理解是不同&#xff0c;有的人是看了writeup就等于刷了&#xff0c;有的人是收藏了writeup就等于刷了&#xff0c;有的人是跟着writeup做了一遍就等于刷了&#xff0c;还有的人是独立思考做了一遍就等于刷了。…...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)

参考官方文档&#xff1a;https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java&#xff08;供 Kotlin 使用&#xff09; 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...

【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统

目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索&#xff08;基于物理空间 广播范围&#xff09;2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...

深度学习习题2

1.如果增加神经网络的宽度&#xff0c;精确度会增加到一个特定阈值后&#xff0c;便开始降低。造成这一现象的可能原因是什么&#xff1f; A、即使增加卷积核的数量&#xff0c;只有少部分的核会被用作预测 B、当卷积核数量增加时&#xff0c;神经网络的预测能力会降低 C、当卷…...

论文笔记——相干体技术在裂缝预测中的应用研究

目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术&#xff1a;基于互相关的相干体技术&#xff08;Correlation&#xff09;第二代相干体技术&#xff1a;基于相似的相干体技术&#xff08;Semblance&#xff09;基于多道相似的相干体…...