学习编程很难。即使当你最终怎么正确使用你的冒号和括号,但仍然有很大的可能你的程序不会如果所想的工作。 通常,这意味着你忽略了某些东西或者误解了语言结构,你需要在代码中找到你的期望与现实存在分歧的地方。

程序员通常使用被叫做调试器debugger的工具来处理这种情况,它允许一步一步地运行他们的程序。不幸的是,大多数调试器都针对专业用途进行了优化,并假设用户已经很好地了解了语言结构的语义(例如:函数调用)。

Thonny 是一个适合初学者的 Python IDE,由爱沙尼亚的 Tartu 大学 开发,它采用了不同的方法,因为它的调试器是专为学习和教学编程而设计的。

虽然 Thonny 适用于像小白一样的初学者,但这篇文章面向那些至少具有 Python 或其他命令式语言经验的读者。

开始

从第 Fedora 27 开始,Thonny 就被包含在 Fedora 软件库中。 使用 sudo dnf install thonny 或者你选择的图形工具(比如“软件Software”)安装它。

当第一次启动 Thonny 时,它会做一些准备工作,然后呈现一个空白的编辑器和 Python shell 。将下列程序文本复制到编辑器中,并将其保存到文件中(Ctrl+S)。n = 1while n < 5:

print(n * "*") n = n + 1

我们首先运行该程序。 为此请按键盘上的 F5 键。 你应该看到一个由星号组成的三角形出现在 shell 窗格中。

Python 分析了你的代码并理解了你想打印一个三角形了吗?让我们看看!

首先从“查看View”菜单中选择“变量Variables”。这将打开一张表格,向我们展示 Python 是如何管理程序的变量的。现在通过按 Ctrl + F5(在 XFCE 中是 Ctrl + Shift + F5)以调试模式运行程序。在这种模式下,Thonny 使 Python 在每一步所需的步骤之前暂停。你应该看到程序的第一行被一个框包围。我们将这称为焦点,它表明 Python 将接下来要执行的部分代码。

你在焦点框中看到的一段代码段被称为赋值语句。 对于这种声明,Python 应该计算右边的表达式,并将值存储在左边显示的名称下。按 F7 进行下一步。你将看到 Python 将重点放在语句的正确部分。在这个例子中,表达式实际上很简单,但是为了通用性,Thonny 提供了表达式计算框,它允许将表达式转换为值。再次按 F7 将文字 1 转换为值 1。现在 Python 已经准备好执行实际的赋值—再次按 F7,你应该会看到变量 n 的值为 1 的变量出现在变量表中。

继续按 F7 并观察 Python 如何以非常小的步骤前进。它看起来像是理解你的代码的目的或者更像是一个愚蠢的遵循简单规则的机器?

函数调用

函数调用Function Call是一种编程概念,它常常给初学者带来很大的困惑。从表面上看,没有什么复杂的事情——给代码命名,然后在代码中的其他地方引用它(调用它)。传统的调试器告诉我们,当你进入调用时,焦点跳转到函数定义中(然后稍后神奇地返回到原来的位置)。这是整件事吗?这需要我们关心吗?

结果证明,“跳转模型” 只对最简单的函数是足够的。理解参数传递、局部变量、返回和递归都得理解堆栈框架的概念。幸运的是,Thonny 可以直观地解释这个概念,而无需在厚厚的掩盖下搜索重要的细节。

将以下递归程序复制到 Thonny 并以调试模式(Ctrl+F5 或 Ctrl+Shift+F5)运行。def factorial(n): if n == 0: return 1

else: return factorial(n-1) * nprint(factorial(4))

重复按 F7,直到你在对话框中看到表达式 factorial(4)。 当你进行下一步时,你会看到 Thonny 打开一个包含了函数代码、另一个变量表和另一个焦点框的新窗口(移动窗口以查看旧的焦点框仍然存在)。

此窗口表示堆栈帧,即用于解析函数调用的工作区。几个放在彼此顶部的这样的窗口称为调用堆栈call stack。注意调用位置的参数 4 与 “局部变量” 表中的输入 n 之间的关系。继续按 F7 步进, 观察在每次调用时如何创建新窗口并在函数代码完成时被销毁,以及如何用返回值替换了调用位置。

值与参考

现在,让我们在 Python shell 中进行一个实验。首先输入下面屏幕截图中显示的语句:

正如你所看到的, 我们追加到列表 b, 但列表 a 也得到了更新。你可能知道为什么会发生这种情况, 但是对初学者来说,什么才是最好的解释呢?

当教我的学生列表时,我告诉他们我一直欺骗了他们关于 Python 内存模型。实际上,它并不像变量表所显示的那样简单。我告诉他们重新启动解释器(工具栏上的红色按钮),从“查看View”菜单中选择“堆Heap”,然后再次进行相同的实验。如果这样做,你就会发现变量表不再包含值——它们实际上位于另一个名为“堆Heap”的表中。变量表的作用实际上是将变量名映射到地址(或称 ID),地址又指向了堆Heap表中的行。由于赋值仅更改变量表,因此语句 b = a 只复制对列表的引用,而不是列表本身。这解释了为什么我们通过这两个变量看到了变化。

(为什么我要在教列表的主题之前推迟说出内存模型的事实?Python 存储的列表是否有所不同?请继续使用 Thonny 的堆模式来找出结果!在评论中告诉我你认为怎么样!)

如果要更深入地了解参考系统, 请将以下程序通过打开堆表复制到 Thonny 并进行小步调试(F7) 中。def do_something(lst, x):

lst.append(x)

a = [1,2,3]

n = 4

do_something(a, n)

print(a)

即使“堆模式”向我们显示真实的图片,但它使用起来也相当不方便。 因此,我建议你现在切换回普通模式(取消选择“查看View”菜单中的“堆Heap”),但请记住,真实模型包含变量、参考和值。

结语

我在这篇文章中提及到的特性是创建 Thonny 的主要原因。很容易对函数调用和引用形成错误的理解,但传统的调试器并不能真正帮助减少混淆。

除了这些显著的特性,Thonny 还提供了其他几个初学者友好的工具。 请查看 Thonny的主页 以了解更多信息!

python怎么输入程序代码_学习用 Thonny 写代码: 一个面向初学者的Python IDE相关推荐

  1. thonny和python有什么关系_学习用 Thonny 写代码: 一个面向初学者的Python IDE

    学习编程很难.即使当你最终怎么正确使用你的冒号和括号,但仍然有很大的可能你的程序不会如果所想的工作. 通常,这意味着你忽略了某些东西或者误解了语言结构,你需要在代码中找到你的期望与现实存在分歧的地方. ...

  2. thonny python ide_学习用 Thonny 写代码:一个面向初学者的Python IDE

    原标题:学习用 Thonny 写代码:一个面向初学者的Python IDE 编译自: https://fedoramagazine.org/learn-code-thonny-python-ide-b ...

  3. mu编程软件python使用方法_一个面向初学者的Python编辑器Mu

    原标题:一个面向初学者的Python编辑器Mu Mu一个开源编辑器,是满足学生可以轻松学习编写Python代码的工具.作为初学程序员的Python编辑器,旨在使学习体验更加愉快.它使学生能够在早期体验 ...

  4. micropython开发idethonny_Thonny 3.0 首个稳定版发布,一个面向初学者的 Python IDE

    艾米视频电脑版下载,创意表白,蒙口羽绒服,步步高官网,韩剧 black,孙中山后代 在您的既有IT基础设施上按需构建人工智能更高效 Thonny 3.0.1 发布了,这是 Thonny 3.0 系列发 ...

  5. 初学者python编辑器-分享|Mu 入门:一个面向初学者的 Python 编辑器

    相识 Mu -- 一个可以使学生学习 Python 更轻松的开源编辑器. Mu 是一个给初学者的 Python 编辑器,它旨在使学习体验更加愉快.它使学生​​能够在早期体验成功,这在你学习任何新知识的 ...

  6. python斗地主游戏源码_我用tkinter写的一个斗地主练习复盘python程序

    python写的斗地主模拟器使用说明,以及python的标准控件库tkinter的使用示例. http://vdisk.weibo.com/s/C5R1f8s9EVq2y 我用python写的一个斗地 ...

  7. python发微信工资条_帮公司财务妹子写了个“群发工资条”的Python脚本!

    hi,大家好,我是朱小五 两周前我发了一篇办公自动化的文章,本来决定最近这个月就不发同类型的了. 结果正如你们所见: 因为这真的是一个很好的Python自动化的案例!!! 所以即使打脸也要推荐给大家! ...

  8. python股票分析入门_学习用Python分析股票数据(入门)

    学习使用python来分析股票,主要事涉及数据获取.数据可视化,以及探究数据中各项指标的含义及和关系.使用工具 pandas.numpy.datatime pandas-datareader 在线获取 ...

  9. java皮卡丘代码_用css以写代码形式画一个皮卡丘

    html5 formData上传 针对app端 function uploadFile() { if ((document.getElementById("file").files ...

最新文章

  1. 【转载】Java之什么是JIT (Just In Time)?
  2. ***大赛结果,名企员工缺乏安全意识
  3. 计算机四级软件工程知识点,计算机四级考点
  4. ListView排序并隔色显示
  5. 新版 chrome 将原生支持图片懒加载!
  6. java开发之分页查询
  7. Android音频系统之AudioFlinger(一)
  8. leetcode ----Trie/stack专题
  9. dbf转成excel_dbf转换成excel下载|dbf转换成excel v1.0-520下载站
  10. ACL(标准/扩展访问控制列表)
  11. 2021SC@SDUSC Zxing开源代码(十三)Aztec二维码(二)
  12. 用Visio画软件(模块)功能图
  13. 聊聊强AI——来到治愈系空间的小茶末
  14. 计算机内存主要技术参数,一分钟读懂计算机内存SDR、DDR的技术规格
  15. 阳光保险港交所上市:年营收1200亿 市值超600亿港元
  16. 更改cadence617 schematic和visualizationAnalysis界面背景颜色
  17. 计算机桌面造句四年级,桌面造句
  18. 服务器连无线路由器视频教程,远程服务器路由器设置教程视频
  19. 企业员工电脑屏幕监控软件有免费版吗
  20. 单反相机的传奇—佳能单反50年辉煌之路(连载六)

热门文章

  1. Mysql的timestamp与datetime
  2. 只下载pycharm不安装python可以用吗_pycharm下怎么配置python
  3. android xml 解析天气,Retrofit2解析天气API XML接口
  4. java如何添加子类,java – 防止子类添加方法
  5. linux 定时器和sleep,linux中sleep函数的使用和总结
  6. python控制excel宏复制,将列从一个excel复制到另一个excel并从python运行宏
  7. codemirror mysql_CodeMirror 实现 JavaScript、 MySql 关键字的变色和自动实时提示 autocomplete...
  8. html js css如何关联_html+css +js 选项卡
  9. 【若依(ruoyi)】菜单操作SQL
  10. vsftp:425 错误