Python Tutor网站调试利器

概述

本文主要是推荐一个网站:Python Tutor.

网站首页写道:

Online Compiler, Visual Debugger, and AI Tutor for Python, Java, C, C++, and JavaScript
Python Tutor helps you do programming homework assignments in Python, Java, C, C++, and JavaScript. It contains a unique step-by-step visual debugger and AI tutor to help you understand and debug code.

翻译过来就是

Python Tutor 是一个在线编译器、可视化调试器和 AI 辅导工具,支持 PythonJavaCC++JavaScript。它帮助你完成 PythonJavaCC++JavaScript 编程作业,提供独特的逐步可视化调试功能,并通过 AI辅导帮助你理解和调试代码。

网站实操

我们以Javascript的几个例子讲解下,就会很快明白这个网站的神奇之处。

不同数据的存储方式

代码如下

var intNum = 42;
var floatNum = 3.14159;
var nanNum = NaN;
var infNum = Infinity;
var ninfNum = -Infinity;

var str = "hello world";

var boolTrue = true;
var boolFalse = false;

var nullVal = null;
var undefVal = undefined;

var lst = ['a', 'b', 3, 4, 5, 'f'];

var obj = {name: 'John', age: 35, hasChildren: true};

var i = 5;
var obj_lst = [i, {foo: i+1, poop: [1, 2, 3]}, {bar: i+2}];

obj.name = 'Jane';

内存分布如下:
在这里插入图片描述

closure闭包
  • 代码如下
var globalZ = 10;

function foo(y) {
  function bar(x) {
    globalZ += 100;
    return x + y + globalZ;
  }
  return bar;
}

var b = foo(1);
b(2);
  • 具体执行过程

    • 第 1 步
      初始化状态,初始化了三个变量:globalZfoob,其值分别为undefined、指向Objects中的某一内存块函数、undefined
      在这里插入图片描述

    • 第 2 步
      globalZ变量赋值10
      在这里插入图片描述

    • 第 3 步
      b变量赋值,执行foo(1)函数,在Global frame中开辟一块foo的空间,里面定义了bar函数以及参数y(其值为1)
      在这里插入图片描述

    • 第 4 步
      定义foo frame中函数的返回值,并将其赋值给变量b
      在这里插入图片描述

    • 第 5 步
      可以看出上面第 4 步的运行结果,变量b指向bar函数
      在这里插入图片描述

    • 第 6 步
      执行b(2)
      在这里插入图片描述

    • 第 7 步
      执行b(2)的内部逻辑,此时参数x2,参数yparent frame中的值1
      在这里插入图片描述

    • 第 8 步
      返回运算结果
      在这里插入图片描述

    • 第 9 步
      最末状态,b(2)执行完返回运算结果后,销毁了bar frame
      在这里插入图片描述

总结

Python Tutor网站上可以实时显示当前代码执行时,各变量函数的指向或者关联情况,对于前端而言,可以很好理解基础数据类型和复杂数据类型的区别和不同。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jinuss

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值