everything is message; message is everything

新的插件

近期我们构建了 extension_python_kernel.py插件, 已经内置在scratch3-adapter最新版本中

同时我们正在规划插件市场:extension_market

extension_python_kernel.py插件用以支持以下使用场景:

  1. codelab-adapter用作Python解释器,解释运行网页发送过来的Python代码
  2. 在Scratch3.0中构建Python REPL
  3. 以简易的方式粘合Python和Scratch3.0

将codelab-adapter用作Python解释器

第一个使用场景: 将codelab-adapter用作Python解释器,可以运行网页发送过来的Python代码

通过这个插件,允许在前端构建编辑器,而将codelab-adapter用作实际运行代码的后端,前端拿到代码执行结果,或者错误信息(stdout/stderr)。这和jupyter的架构很相似,我之前写过几篇分析jupyter架构的文章,jupyter是codelab-adapter的灵感来源之一。

如此一来,为了教学Python,就不必使用javascript实现的Python解释器了。不再需要烦心不同解释器之间的差异。学习者也不会为此困惑。更重要的是,得到了一个完全真实的Python解释器,它可以与网络交互,可以与文件系统交互!你在网页里写的Python代码可以做到任何事!喜欢requests库?尽情使用它吧,在下个发行版中,我们将在codelab-adapter内置常用的Python库!

在Scratch中构建Python REPL

下边来做一件有趣的事,借助extension_python_kernel.py, 搭配codelab的scratch3.0 EIM extension,只需9块积木,就可以在在scratch 3.0中构建一个python REPL!

我们创建了一个列表用来容纳输出,这是个非常理想的容器!

使用询问积木作为代码的输入框。

我们来实际测试一下

来测试一个更复杂的代码:import re;print(re.search(r'just4fun', 'blog.just4fun.site').span()), 测试代码的逻辑是 找出blog.just4fun.site中just4fun的起止位置。

结果显示just4fun的起止位置为(5,13)

9块积木完成python REPL!

codelab-adapter可以支持其他编程平台吗?

如果你希望将codelab-adapter用作你自己的编程平台(无论是scratch3还是blockly)的Python解释器。参考codelab-adapter可以支持其他编程平台吗?