Python程序员Visual Studio Code指南

Python 入门教程(2)搭建环境 | 2.3、VSCode配置Python开发环境 Visual Studio Code(简称VSCode)以其强大的功能和灵活的扩展性,成为了许多开发者的首选。本文将详细介绍如何在VSCode中配置Python开发环境。 阅读详情

5 调试

当运行程序时终端输出错误时,可以参考编辑器中的"问题"面板来解决遇到的问题。不过,并非所有错误都会导致错误。可能出现的情况是,程序执行成功,但输出结果与预期不同。出现这种情况时,下一步就是找出程序中的错误。这个过程被称为调试。

您可以尝试通过注释代码行(从而禁止代码块运行)、添加更多打印语句以在代码块执行后输出,或修改程序中的行来定位和解决问题。虽然每种方法都能帮助你找出错误和可能的修复方法,但这一过程效率很低。

Visual Studio Code有内置调试器,它的功能通过Python扩展得到了进一步扩展。虽然调试器可以帮助您识别和修复错误,但您仍有责任识别错误可能出现在代码的哪个位置。一旦你确定了错误的潜在位置,就可以使用调试器来帮助你跟踪程序的执行状态。

5.1 启动调试

要让调试器在执行过程中暂停,必须在代码的某一行设置断点。只要你想检查程序的运行状态,然后逐行检查代码,就可以设置断点。在 Visual Studio 代码中,断点会以红点的形式出现在编辑器空白处。当调试会话开始时,调试器会执行到断点为止的所有代码行,并高亮显示要执行的下一行。(如果是步进操作,则例外,这将在后面的 "调试命令 "一节中解释)。

要添加断点,请将鼠标悬停在当前代码行的编辑器边框上,然后单击以添加断点。或者,使用键盘快捷键F9来添加当前代码行。要移除断点,请在编辑器空白处选择断点,或再次按F9键。也可以在顶部菜单中选择运行,然后选择移除所有断点,从而移除所有断点。

你可以在会话期间暂停调试器的任何位置调用debugypy.breakpoint()来强制设置断点。如果要强制设置断点,必须在代码中导入debuypy。调用后,调试器会停止下一行代码。这种方法会在程序中硬编码断点。如果你有一些异步的回调函数,而你又不想用其他断点来设置、清除、启用或禁用它们,那么这种方法可能会很有用。通过对几个断点进行硬编码,就能在回调函数发生时捕捉到它们。

您可以通过以下方式启动调试会话:

  • 菜单: 选择运行 ➪ 启动调试。

  • 键盘快捷键: 按 F5。

  • 运行视图: 单击运行和调试

  • 运行视图: 单击 “开始调试”(在调试会话启动后出现)

编辑器在调试会话期间的行为由调试配置控制。调试配置是调试器功能的设置列表。Python 扩展提供了几种配置,稍后将在 "启动配置 "中探讨。本章练习中出现提示时,点击 Python 文件配置,调试当前活动的 Python 文件。

启动调试会话后,会打开运行视图。运行视图用于管理调试会话。当调试会话处于活动状态时,"运行 视图中的面板会根据正在执行的内容动态变化。

当代码中添加断点时,断点面板会将模块名称(如times_two.py)及其相应的断点行添加到列表中。目前times_two.py 中有两个断点,一个在第4行,另一个在第6行。在断点面板中选择其中一个断点,编辑器就会高亮显示该断点。

假设你在程序中设置了多个断点。在调试时,你决定在会话中只选择一些断点,这样就不必在每个断点都暂停调试器了。移除不需要的断点会删除断点,如果你打算在后续调试会话中保留断点,这可能不是你的本意。相反,你可以禁用断点。在 "断点"面板中,取消选中断点旁边的方框即可禁用断点。或者,你也可以右键单击断点,然后单击禁用断点。如果想一次性禁用所有断点,可以单击"停用断点"按钮。不过,如果您想删除所有断点,请单击"删除断点"按钮。删除所有断点有助于确保清除程序中设置的所有断点。

调试器运行时,变量的当前状态会反映在变量面板中。变量面板将变量分为局部和全局范围。

在继续调试的过程中,请注意面板中变量的变化情况。虽然变量会随着程序的执行而填充,但变量值有可能会产生错误,从而导致代码停止执行。如果你发现换一个值就能继续执行程序,你可以在变量面板中更改该值。要更改数值,请选中变量并按Enter键。输入新变量后,再按一次Enter键,将修改后的值保存到程序状态中。

5.2 调试命令

除运行视图外,编辑器中还会出现调试工具栏(见图 5.9)。调试工具栏提供了对这些调试命令的快速访问:

  • A—Continue (F5)

  • B—Step Over (F10)

  • C—Step Into (F11)

  • D—Step Out (Shift+F11)

  • E—Restart (Shift+Cmd/Ctrl+F5)

  • F—Stop (Shift+F5)

调试命令是一起工作的,而不是独立的;也就是说,你通常要使用多种命令的组合来调试不同的代码行。

除调试工具栏命令外,编辑器右键上下文菜单中还提供了其他命令。这些功能包括

  • 添加内联断点(Add Inline Breakpoint)-在代码中添加断点,特别是在光标下的代码中。这对单个语句中的复合表达式非常有用,因为您希望在表达式的特定部分断开。或者,您可以导航到运行 ➪ 新断点 ➪ 内联断点,或者使用键盘快捷键 Shift+F9。

  • 运行到光标(Run to Cursor)-运行一段代码而不设置另一个断点。

  • 跳转到光标(Jump to Cursor)-跳转代码行或返回并重复代码行。

5.2.1 Continue

当调试器停在某个断点时,单击"继续(Continue)"会运行该断点后的所有代码,直到下一个断点或程序结束。

5.2.2 Step Over

Step Over命令运行调试器当前暂停的代码行,然后自动暂停到下一行,无需另设断点。如果当前行是函数调用,调试器将运行整个函数,然后在函数调用后的下一行暂停。从本质上讲,Step Over命令是在当前范围内逐行进行调试。

试试看 运行调试器,逐行查看代码。注意,当调试器运行到 times_two() 函数定义处时,调试器的下一步是 print() 语句。

5.2.3 Step Into

当调试器在函数处暂停时,Step Into 命令会进入函数作用域。在这里,你可以查看函数作用域内的每一行,还能进入其他函数调用。

5.2.4 Step Out

如果发现自己想从函数内部退出到调用该函数的作用域,可以使用Step Out命令。

5.2.5 停止

在调试会话期间,可以使用Stop命令停止所有执行。停止会话会停止调试器,但不会结束程序。如果在调试会话期间发现了程序中的错误,并得出结论:如果继续执行,可能会产生影响程序的副作用,例如覆盖错误的文件。在这种情况下,请选择停止命令退出调试器。

5.2.5 重新启动

在调试和纠正程序中的错误时,你往往不想继续在当前(通常是错误的)状态下运行程序。这时,你需要停止执行并重新启动调试程序。重启(Restart)命令可以方便地停止调试器,保存当前文件,然后用最近的修改重新启动调试器。

参考资料

  • 软件测试精品书籍文档下载持续更新 https://github.com/china-testing/python-testing-examples 请点赞,谢谢!

  • 本文涉及的python测试开发库 谢谢点赞! https://github.com/china-testing/python_cn_resouce

  • python精品书籍下载 https://github.com/china-testing/python_cn_resouce/blob/main/python_good_books.md

  • Linux精品书籍下载 https://www.cnblogs.com/testing-/p/17438558.html

5.3 调用堆栈

模块及其函数调用被称为框架。帧相互堆叠,当函数返回时,相应的帧会从堆栈中清除。以times_two.py程序为例,模块框架位于栈的底部,而times_two()函数框架位于栈的顶部。如果times_two()函数进行函数调用,被调用的函数将位于栈顶。调用栈本身被称为调用栈。

调试视图中的调用栈面板显示了导致当前执行点的整个函数调用链。调用栈面板列出了正在调试的文件和文件中正在运行的行。如果调用经过项目中的其他文件,调用堆栈尤其有用,因为调用堆栈会记录你在调试链中的位置。

此外,如果处于断点处,可以选择调用堆栈中的某一帧,变量面板会显示堆栈中该断点处的程序状态。这对于通过堆栈和生成该值的所有代码追溯错误值的源头非常有用。

逐行查看代码,直到调用times_two()函数。进入函数并注意调用堆栈。现在,times_two()框架已添加到调用堆栈中

调试器完成函数调用并返回总数后,times_two()框架将从调用栈面板中清除。

5.4 条件断点(Logpoints)

你可以配置断点,使其在特定条件为真时触发(条件断点),或在断点被触发一定次数后触发。

当你为断点指定的表达式求值为真时,条件断点就会断开。例如,如果要调试数据库中的数据,可以在出现特定记录时中断。

命中计数使调试器能够执行到指定的出现次数。Python扩展支持的命中计数是前面带有 、>、>=、<、<= 和 % 操作符的整数。参考数据库示例,假设您发现一个错误在进程的第 1500 次迭代时发生。与其每次迭代都进行到第 1500 次,不如设置当 1500 时断开。

要添加条件断点,请右键单击相应行的编辑器边距,然后单击添加条件断点。在出现的下拉菜单中,也可以使用相同的下拉菜单添加命中计数。

5.4 日志点(Logpoints)

日志点会向调试控制台输出一条信息,而不会中断调试器。日志点在编辑器空白处显示为菱形。

要添加日志点,右键单击相应行的编辑器页边空白处,然后单击添加日志点。虽然日志信息是纯文本,但也可以在大括号中加入要评估的表达式。写完信息后按Enter。

5.5 监视(Watch)

当程序只有几个变量时,变量面板可能足以跟踪变量状态。但是,如果程序中有几十个甚至上百个变量,该怎么办呢?如何关注单个变量受所有正在执行的程序的影响就变得很麻烦。

如果你想在不使用变量面板的情况下关注一个(或多个)变量,可以将该变量添加到观察面板。当调试器运行时,观察面板会跟踪所选变量的状态。该面板将表达式作为输入,并在每一行代码执行时更新变量。要在观察面板中添加变量,请单击 "添加表达式 "并输入变量名。或者,也可以在编辑器中突出显示变量,右键单击,然后单击添加到观察。

试试看 在编辑器中打开watch.py,在greeting = ’ Hello World’处设置断点,然后启动调试器。调试器在断点处暂停后,将变量total添加到 Watch 面板。

查看代码的每一行,注意变量赋值在代码执行过程中的变化。

注意 当调试器启动时,total 的值反映 NameError: name ‘total’ is not defined(名称’total’未定义)。出现这种情况的原因是程序尚未执行定义变量的代码行。一旦程序执行 total = 0,变量值就会更新为 0。 如果同一变量名在调用栈的不同位置使用(例如不同作用域),则以最新的变量名为准。当帧退出并从堆栈中移除时,Watch 面板会显示下一个最高作用域中的变量值。

watch.py 中有六个变量:greeting、total、iteration、numbers、num 和 iteration_num。当调试器走过程序的每一行时,列表就会增加,以包括执行的每个变量。当调试器走过每一行代码时,你可以通过查看观察面板更好地关注总计的状态。

5.6 调试控制台(The Debug Console)

调试程序时,您可以在调试控制台中尝试潜在的错误修复方法,而不是修改代码后重新启动。通过调试控制台,您可以在程序当前状态下尝试代码,而无需停止调试器。您可以在调试控制台中尝试不同的方案,并在调试器暂停时将修正结果复制到程序中。

调试控制台在编辑器中提供了Python读取-评估-打印-循环 (REPL Read-Eval-Print-Loop) 功能。通过调试控制台,您可以访问和修改程序的所有变量,调用函数,求值表达式,以及使用程序的当前状态运行任何您喜欢的代码。控制台中的任何操作都会影响程序的当前状态。此外,调试控制台输入支持语法着色、缩进、自动关闭引号以及活动编辑器模式的其他语言特性。

您可以通过以下三种方式访问调试控制台:

  • 运行视图: 单击调试控制台图标。

  • 键盘快捷键: 按 Cmd/Ctrl+Shift+Y。

  • 主菜单: 查看 -> 调试控制台。

调试控制台会在您输入时显示建议。按Enter键后,表达式将被评估。要输入多行,请在两行之间按下Shift+Enter 键。

在调试控制台中,可以直接调用函数并评估结果。如果调用的函数有断点,则可以逐步查看函数代码。退出函数后,你仍然处于与之前相同的程序状态。你还可以使用调试控制台更改变量,运行程序中没有的代码。

试用:在编辑器中打开Fibonacci_generator.py文件。Fibonacci_generator.py文件包含生成斐波那契数字列表的程序。斐波那契数构成一个序列,序列中的下一个数字是序列中前两个数字之和(例如 1、1、2、3、5、8、13、21)。程序启动时,会提示用户输入程序应生成的数字总数。为了演示调试控制台,故意在程序中添加了一个错误。请按照以下说明使用调试控制台修复错误:

  • 在终端运行程序,根据提示输入1作为要生成的斐波纳契数。程序成功运行并返回 [1]。

  • 再次在终端运行程序,根据提示输入2作为要生成的斐波那契数。程序成功运行并返回 [1,2]。

  • 再次在终端运行程序,根据提示输入要生成的斐波那契数 3。这次程序运行时停滞了。在键盘上按 Ctrl+C 退出程序。退出程序后,终端会出现一个错误:

How many Fibonacci numbers would you like to generate? 3  
^CTraceback (most recent call last):  
  File "/home/andrew/code/Code_Samples/Code Samples/debugger/Fibonacci_generator.py", line 18, in <module>  
    print(gen_fib())  
  File "/home/andrew/code/Code_Samples/Code Samples/debugger/Fibonacci_generator.py", line 12, in gen_fib  
    while i < (count - 1):  
KeyboardInterrupt  

在计数 > 2 时的 elif 语句中,i == 1 似乎有问题。可以认为程序中的错误就出在这里。

  • 在i == 1处设置断点并启动调试器。出现提示时,输入3。

调试器在断点处暂停后,查看变量面板,确认变量是否反映了适当的值。

  • Step over到 while 循环的最后一行

注意到尽管已经生成了所需的斐波纳契数,循环仍开始了另一次迭代。继续跳过 while 循环,程序会生成相同的斐波纳契数,而且 while 循环从未中断过。该程序是一个无限循环。

  • 启动调试器并打开调试控制台

调试器在断点处停止后,输入i+=1 以递增 i 的值。
在变量面板中,i 的值从 1 变为 2。 现在,继续调试程序时,执行代码的其余部分,只生成三个斐波那契数字。

5.7 启动配置

启动配置可让你配置不同调试会话的运行方式,并将这些配置持久保存在 launch.json 文件中。launch.json 文件保存在项目根目录下的 .vscode 文件夹中,也可在用户或工作区设置中访问。要进行调试,launch.json 文件中至少需要一个配置。

要创建 launch.json 文件,请在运行视图中单击创建 launch.json 文件。或者,你也可以从 "运行 "菜单中选择 “运行” ➪ "打开配置 "来创建 launch.json 文件。

Visual Studio Code会从命令面板打开配置菜单,提示您选择默认配置作为新配置的启动模板。

Python 扩展提供了以下默认配置:

  • Python 文件-调试当前活动的 Python 文件。

  • 模块-通过使用 -m 调用 Python 模块来调试该模块。

  • 远程连接-为调试服务器监听提供主机名和端口号。

  • 使用进程 ID 附加-当运行在 Visual Studio Code 之外启动的 Python 脚本时,将调试器附加到非调试模式下的 Python 进程。附加到进程需要进程 ID。

该扩展还为网络应用程序提供了三种默认配置:

  • Django

  • Flask

  • Pyramid

要了解有关调试Django应用程序的更多信息,请参阅代码.visualstudio.com/docs/python/tutorial-django#_explore-the-debugger 的Django教程。要了解有关调试 Flask 应用程序的更多信息,请参阅位于 code.visualstudio.com/docs/python/tutorial-flask#_run-the-app-in-the-debugger 的 Flask 教程。

选择启动模板后,launch.json文件将添加到 .vscode 文件夹中,并在编辑器中打开。

编辑 launch.json 文件时,IntelliSense 会提示(Ctrl+空格键)可用属性列表。您也可以对文件中的所有属性使用悬停帮助。由于不同语言的属性可能不同,使用悬停帮助可以了解有关属性的更多信息。

launch.json 文件可以包含任意数量的配置。要添加配置,请从运行菜单或 launch.json 编辑器中单击添加配置。

这里提供了 launch.json 文件可用的核心设置:

  • name -为出现在 Visual Studio 代码下拉列表中的调试配置提供名称。

  • type-指定要使用的调试器类型;对于 Python 代码,将其设置为 python。

  • request-指定开始调试的模式:

  • launch: 在程序中指定的文件上启动调试器。

  • attach(附加): 将调试器附加到远程服务器上已经运行的进程上,该进程不能随意重启。本地需要与程序中指定的相同的源代码文件。

  • program-提供 Python 程序入口模块(启动文件)的完整路径。默认配置中经常使用的 ${file} 值,会使用编辑器中的当前活动文件。通过指定启动文件,可以确保无论打开哪个文件,都能以相同的入口点启动程序。

  • python- 指向用于调试的 Python 解释器的完整路径。如果未指定,则默认使用 python.pythonPath 设置中指定的解释器,相当于使用 ${config:python.pythonPath} 值。要使用其他解释器,请在调试配置的 python 属性中指定其路径。

  • args-指定传递给程序的参数。参数字符串中以空格分隔的每个元素都应包含在引号中。

  • cwd-指定调试器的当前工作目录,它是代码中使用的任何相对路径的基本文件夹。如果省略,当前工作目录默认为${workspaceFolder},即编辑器中打开的文件夹。或者,也可以使用在每个平台上定义的自定义环境变量,其中包含要使用的 Python 解释器的完整路径,这样就不需要额外的文件夹路径了。

其他配置请访问 code.visualstudio.com/docs/python/debugging#_set-configuration-options。还有一些非Python 特有的附加属性,可以在 launch.json 中设置。要了解更多信息,请参阅 code.visualstudio.com/docs/editor/debugging#_launchjson-attributes。

---------------------------END---------------------------

题外话

在这里插入图片描述

感兴趣的小伙伴,赠送全套Python学习资料,包含面试题、简历资料等具体看下方。

👉优快云大礼包🎁:全网最全《Python学习资料》免费赠送🆓!(安全链接,放心点击)

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

img
img

二、Python必备开发工具

工具都帮大家整理好了,安装就可直接上手!img

三、最新Python学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

img

四、Python视频合集

观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

img

五、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。img

六、面试宝典

在这里插入图片描述

在这里插入图片描述

简历模板在这里插入图片描述

👉优快云大礼包🎁:全网最全《Python学习资料》免费赠送🆓!(安全链接,放心点击)

Python学习精粹008:使用Visual Studio Code开发Python 一文详解使用Visual Studio Code开发Python,以及Visual Studio Code的常用快捷键。 阅读详情

相关推荐

2025最新版Visual Studio Code安装使用指南

本文简要介绍2025年最新版Visual Studio Code的安装使用方法;作为新一代轻量级IDE,VS Code引领开发者浪潮若许年,并将持续下去。

jackson_lingua的博客 6181

VS Code 配置 Python 开发环境

详细介绍 VS Code 中配置 Python 的运行环境及常用的插件。

guliang21的专栏 6810

2024最新版Visual Studio Code安装使用指南

Visual Studio Code最新版不仅用于Python的IDE进行程序开发,还可用于其它语言的应用开发。想要开发Python, Java, C/C++, JavaScript, Go, Rust, Ruby, Kotlin等语言的应用程序,只需安装相应的程序包,以及在Visual Studio Code安装相应extension,这个强大的轻量级IDE就可以开发任意的应用程序。

jackson_lingua的博客 8634

使用Visual Studio Code 进行Python编程(一)-环境搭建、hello Python

使用Visual Studio Code开发Python的第一个例程,Hello Python world

老胡杨树的博客 1万+

Windows 系统下使用Python与Visual Studio Code搭建高效开发环境指南

Windows下使用Python与Visual Studio Code搭建高效开发环境指南

qq_37491737的博客 701

Visual Studio Code 的Remote Development 插件在AI开发中屌爆了

作为程序员我一直推广Visual Studio Code , 一个轻, 二插件多,三直观,从问世到现在快4年了,我一直觉得这个东西可以直接替换掉Visual Studio 这个宇宙最强,我觉得是又老又笨的东西,上古开始无数硬盘空间就给这个宇宙最强吃掉了。我很久没写博客了,也得出来吹吹。这四年技术变化有点大,我从一个跨平台吹,换成了一个AI吹。相信身边的你,或者也变了。记得Visual...

Kinfey 1857

代码 阅读器:SI (Source Insight)、vscode(Visual Studio Code)、code-server、Visual Studio、OpenGrok

代码 阅读器:IDE、SI (Source Insight)、OpenGrok

freeking101的博客 7550

使用 Visual Studio Code 调试 Python 程序

Visual Studio Code(简称 VS Code)是一款功能强大的代码编辑器,它提供了丰富的调试功能来帮助开发人员识别和解决程序中的错误。调试器是一个强大的工具,可以帮助你快速定位和解决程序中的问题,提高开发效率。在 VS Code 中,点击左侧导航栏中的“调试”图标,然后点击“创建一个启动配置”。在弹出的对话框中选择一个文件夹作为你的项目根目录,并点击“选择文件夹”。在顶部工具栏中,选择一个调试配置(在本例中为“Python”)。在弹出的选择环境列表中,选择“Python”。

DpgrMl的博客 1440

Visual Studio Code中的Python开发

One of the coolest code editors available to programmers, Visual Studio Code, is an open-source, extensible, light-weight editor available on all platforms. It’s these qualities that make Visual Studi...

cumei1658的博客 2119

从指令到坐标:深度解析307系列基站定位的AT指令实战与排错

本文深度解析了ML307系列模组基站定位的AT指令实战应用与排错方法。重点剖析了AT+MLBSCFG和AT+MLBSLOC两条核心指令的配置、执行流程及异步响应机制,并针对高德与OneOs两种主流定位服务提供了完整的配置指南。文章结合常见错误码(如126、127)和硬件注意事项,分享了确保定位成功的实战经验与稳健的程序框架。

weixin_29057695的博客 490

ESP32实战:破解校园网WPA2-Enterprise认证的完整指南

本文详细介绍了如何使用ESP32开发板破解校园网WPA2-Enterprise认证的完整指南。通过硬件准备、环境搭建、核心代码实现及常见问题排查,帮助开发者解决企业级WiFi连接难题,特别适用于校园网环境下的物联网设备开发。

weixin_29194817的博客 457

安装和设置Visual Studio Code(VS Code)的简要教程

使用Visual Studio Code的缘起 我学习Python的起因,是为了做量化交易。 相比一般的交易软件,Python更加自由,能够充分实现我的想法。 于是买了许多书,开始学习。 最开始使用的集成开发环境是Spyder。spyder是真的好用,尤其是用来绘制matplotlib的图表。 后来,随着学习的深入,然后接触到了PyCharm,这也是一个相当优秀的集成开发环境。PyCharm的插件要比Spyder丰富许多。或者说,Spyder基本没有什么插件。 然而,比起Visual Studi

qq_37944726的博客 4398

ODrive0.5.5源码分析(1) ADC的处理

odrive 0.5.5 ADC

danger的博客 4307

程序员,匠工也,凡所利器,皆应知之!Visual Studio Code

  作为一名编程爱好者,而非从业者,我很庆幸能从编程过程中体会到很多乐趣,脱离烦恼,怡然生活,使Coding成为生活的一大爱好。多年的积累使我 十八般兵器,样样都听过,偶尔也能舞出个三板斧出来,唬唬别人, 遇到行家,那就双手作揖,大佬说的对!   最近,给电脑重装系统后,突然看着各类IDE,心头着实有些堵,于是乎,想着能否来个大一统呢,就 博览群书, 网上搜搜,翻翻博客,发现今天要简单聊的免费神器Visual Studio Code.   其实,之前因为鄙人涉猎广泛,对IDE感情不专一,其实也没法专一起来。

safengxiao的博客 2106

基于N32G003的PMBus从机协议栈设计与STM32F103模拟I2C主机通信实战

本文详细介绍了基于N32G003微控制器设计PMBus从机协议栈,并与STM32F103模拟I2C主机进行通信的实战方案。重点阐述了中断驱动架构、命令解析、CRC8优化及超时恢复机制,实现了在70kHz速率下稳定可靠的工业电源管理通信,适用于服务器电源、通信基站等成本敏感应用场景。

numpy6sculptor的博客 919

Hermes Agent Windows安装教程:本地智能体离线部署实战

本地智能体(Local Agent)是一种运行在用户设备端、无需云端依赖即可响应自然语言指令并自动化执行任务的轻量级AI运行时框架。其核心原理基于配置驱动的任务监听与脚本调用机制,通过服务化驻留实现持续响应能力,技术价值在于保障数据隐私、规避API调用限制、适配内网及老旧系统环境。典型应用场景包括财务报表自动整理、科研仪器数据归档、IT资产变更通知等Windows桌面自动化需求。本文聚焦Hermes Agent这一主流开源实现,围绕Windows平台特有的服务注册、权限模型、杀软拦截、中文路径与YAML编码

weixin_34411563的博客 433

如何快速掌握Visual Studio Code:程序员必备的终极代码编辑器指南

Visual Studio Code(简称VS Code)是微软开发的一款免费、开源的现代化代码编辑器,它结合了轻量级编辑器的快速响应和集成开发环境的强大功能。作为GitHub上最受欢迎的开源项目之一,VS Code支持超过50种编程语言,拥有庞大的扩展生态系统和AI编程助手Copilot,已成为全球开发者的首选工具。无论你是前端开发者、后端工程师还是数据科学家,VS Code都能提供高效、智能的

gitblog_01068的博客 1112

基于Python的专利数据爬虫开发指南:从入门到实战

本文将详细介绍如何使用Python开发一个高效的专利数据爬虫系统,涵盖最新技术栈如Playwright、异步IO、反反爬策略等。文章包含完整代码实现、性能优化技巧及法律合规建议,帮助读者构建可投入生产的专利数据采集解决方案。专利数据是技术创新的重要指标,包含技术细节、申请人信息、法律状态等宝贵信息。企业竞争情报分析技术趋势预测研发方向决策知识产权战略制定。

2201_76125261的博客 1589

Visual Studio Code + python 开发环境搭建

最近学python(不知道什么时候起这哥们变得如此流行,以至于机器学习之类的课题都要学习一下它),发现编辑器虽好,但还是喜欢VS那样的IDE,毕竟可以很方便调试,而不是“死后验尸”或高级点打印出些“遗言”。  于是选了最习惯的Visual Studio Code来搭环境(方便到Ubuntu下也用起来,毕竟机器学习。当然也不用讨论别的工具才牛逼这样的话题,其实习惯了都牛逼,代码本身才重要)。  Vis

weixinhum 3万+

【OpenClaw从入门到精通】第66篇:Skill开发进阶——从零打造一个跨境选品Skill(附完整代码)(2026实测版)

2026年跨境电商效率革命中,AI Agent已成为选品核心工具,但通用Skill难以适配个性化需求。本文以“跨境选品”为实战场景,从零讲解OpenClaw Skill的完整开发流程:从需求分析、目录结构设计、SKILL.md编写,到Python脚本开发(含1688商品搜索、销量分析、竞品对比核心功能),再到调试测试、安全审计与ClawHub发布。文中提供可直接复制的完整代码,覆盖多平台适配、异常处理、数据可视化等进阶功能,同时解决API调用、链接失效等实际问题。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 568

Android 蓝牙——概述(一)

Profiles (蓝牙应用规范),它从应用场景的角度为蓝牙技术的使用制定了不同的规范。这也是和大众日常生活接触最多的一部分。蓝牙支持很多Profiles:MAP:(MessageAccessProfile),短信访问协议,允许设备间的信息交换,短信。使用场景:智能车载中同步短信等信息。HFP:(Hands-free Profile),电话免提协议,让蓝牙设备(如蓝牙耳机/车机)可以控制电话,如接听、挂断、拒接等。

小旭的专栏 3493

Visual Studio IntelliCode API使用示例:开发者实用指南

Visual Studio IntelliCode是一款由微软开发的AI增强型开发工具,它通过分析代码上下文和模式,为开发者提供智能代码补全、API使用建议和代码优化提示,帮助提升开发效率和代码质量。无论是新手开发者还是有经验的程序员,都能通过IntelliCode的智能辅助功能更快速地编写高质量代码。 ## 什么是Visual Studio IntelliCode? Visual Studi

gitblog_00061的博客 703

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

最新版万能编辑器Visual Studio Code安装使用教程

Visual Studio Code简称VS Code,是Microsoft(微软)在2015年4月30日Build开发者大会上正式宣布一个运行于 Mac OS X、Windows和 Linux 之上的,针对于编写现代Web和云应用的跨平台源代码编辑器,可在桌面上运行,并且可用于Windows,macOS和Linux。它具有对JavaScript,TypeScript和Node.js的内置支持,并具有丰富的其他语言(例如C++,C#,Java,Python,php,Go)和运行时(例如.NET和Unity)

站长在线在优快云 784

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

python 在 visual studio 下使用和配置必要的库

1.前言 尽管python有专用的IDE,如Pycharm,但对于习惯使用Visual Studio系列软件的程序员而言,使用Pycharm有点不适。而微软也在vs2013/2016/2017中嵌入可编写python代码的插件,甚至vs2017中可以直接编写python程序。 本文介绍如何安装python,在visutal studio下配置python环境,以及安装必要的python库。 ...

mouMshi的专栏 5171

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Visual Studio Code调试配置完全指南:launch.json深度解析

Visual Studio Code的调试功能是开发者日常工作中不可或缺的工具,而launch.json文件则是调试配置的核心。无论你是前端开发者、后端工程师还是全栈程序员,掌握launch.json的配置技巧都能极大提升你的开发效率。 ## 什么是launch.json文件? launch.json是Visual Studio Code的调试配置文件,位于项目根目录的`.vscode`文件夹

gitblog_00686的博客 900

⭐️visual studio code使用教程

⭐️Visual Studio Code工作界面使用教程Visual Studio Code凭借其轻量级、功能强大、可扩展性强以及跨平台支持等特点,已经成为众多开发者的首选代码编辑器。通过熟悉和掌握Visual Studio Code的界面布局、主要功能以及进阶特性,你将能够更加高效地进行编程工作,提升开发效率和质量。Visual Studio Code(VS Code)作为一款轻量级但功能强大的源代码编辑器,以其丰富的插件生态、高效的编辑体验以及跨平台的兼容性,赢得了广大开发者的青睐。

Python老吕的博客 7187
上一篇: 吐血整理!计算机软考转机考常见问题大合集!
下一篇: 30个极简Python代码
Python_P叔
博客等级 码龄3年 5454粉丝 827原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值