有些函数或变量是多个积木共用的,我们将其称为公共函数或变量。我们可以通过配置 Python 公共代码来统一定义和修改这些函数或变量。
配置 Python 公共代码的方法有多种,本文将介绍其中三种:
- 方法一:在帽子积木中添加
- 方法二:修改转码模板
- 方法三:在中间件中定义
在帽子积木中添加
转码的积木通常都会拼接在“当 xx 启动时”的帽子积木下面,因此我们可以将公共代码添加在帽子积木的“lib”中。
转码后如下所示:

:::info
优点:可以在拼接积木的时候实时看到转码效果
缺点:代码较分散且依赖特定的积木
:::
修改转码模板
在配置扩展或设备时,选择“转码设置”页签,将支持的转码语言设置为 Python,然后修改“Python 转码模板”。

将 add 函数放在 “### code #$$” 前面,如下所示:
# generated by mBlock5 for <product># codes make you happy### import #$$### lib #$$#### initialize variables###{(this.$ALL_VARIABLES.length === 0) ? undefined : this.$ALL_VARIABLES.map(n => n + ' = 0').join('\\n')}#$$#$$def add(a, b):print('%d+%d=%d'%(a,b,a+b))### code #$$###while True:# every tick### loop #$$#$$
:::info
优点:可以在拼接积木的时候实时看到转码效果
缺点:如果公共代码太多,会影响转码模板的直观性、增加维护的难度。
:::
在中间件中定义
在配置扩展时,选择“基础信息”页签,然后配置中间件。

在配置设备时,选择“连接配置”页签,然后配置中间件。

以配置设备的中间件为例:
1、点击 “+” 添加一个中间件。

2、设置中间件的名称。

3、勾选自定义。

4、编辑代码。

这里的代码就是所有积木转码后的字符串,我们可以在这里将需要的公共代码插入进去,然后将代码返回,如下所示:
/*** Custom Upload Middleware** @param {AppContext} app* @param {DeviceContext} device* @param {String} code* @param {Object} params* @param {Function} logH* @param {Function} progessH*/(app, device, code, params, logH, progessH) => {// process code herecode += 'def add(a,b):print('%d+%d=%d'%(a,b,a+b))\n';return code;}
:::info
优点:不想其他人直接在转码区看到的代码可以写在中间件里。
缺点:在转码区无法直观看到转码效果,只有在点击“上传”的时候才会生效。
:::
总结
方法一:上手容易,无需额外学习。推荐指数:★★★★★
方法二:上手容易,但是代码量太大会影响模板的维护。推荐指数:★★
方法三:上手有一定难度,而且不直观,比较偏骇客。推荐指数: ★
