有些函数或变量是多个积木共用的,我们将其称为公共函数或变量。我们可以通过配置 Python 公共代码来统一定义和修改这些函数或变量。

配置 Python 公共代码的方法有多种,本文将介绍其中三种:

Python 公共代码配置 - 图1

:::info 优点:可以在拼接积木的时候实时看到转码效果
缺点:代码较分散且依赖特定的积木 :::

修改转码模板

在配置扩展或设备时,选择“转码设置”页签,将支持的转码语言设置为 Python,然后修改“Python 转码模板”。

Python 公共代码配置 - 图2

将 add 函数放在 “### code #$$” 前面,如下所示:

  1. # generated by mBlock5 for <product>
  2. # codes make you happy
  3. ### import #$$
  4. ### lib #$$
  5. ###
  6. # initialize variables
  7. ###{
  8. (this.$ALL_VARIABLES.length === 0) ? undefined : this.$ALL_VARIABLES.map(n => n + ' = 0').join('\\n')
  9. }#$$
  10. #$$
  11. def add(a, b):
  12. print('%d+%d=%d'%(a,b,a+b))
  13. ### code #$$
  14. ###
  15. while True:
  16. # every tick
  17. ### loop #$$
  18. #$$

:::info 优点:可以在拼接积木的时候实时看到转码效果
缺点:如果公共代码太多,会影响转码模板的直观性、增加维护的难度。 :::

在中间件中定义

在配置扩展时,选择“基础信息”页签,然后配置中间件。

Python 公共代码配置 - 图3

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

Python 公共代码配置 - 图4

以配置设备的中间件为例:

1、点击 “+” 添加一个中间件。

Python 公共代码配置 - 图5

2、设置中间件的名称。

Python 公共代码配置 - 图6

3、勾选自定义。

Python 公共代码配置 - 图7

4、编辑代码。

Python 公共代码配置 - 图8

这里的代码就是所有积木转码后的字符串,我们可以在这里将需要的公共代码插入进去,然后将代码返回,如下所示:

  1. /**
  2. * Custom Upload Middleware
  3. *
  4. * @param {AppContext} app
  5. * @param {DeviceContext} device
  6. * @param {String} code
  7. * @param {Object} params
  8. * @param {Function} logH
  9. * @param {Function} progessH
  10. */
  11. (app, device, code, params, logH, progessH) => {
  12. // process code here
  13. code += 'def add(a,b):
  14. print('%d+%d=%d'%(a,b,a+b))\n';
  15. return code;
  16. }

:::info 优点:不想其他人直接在转码区看到的代码可以写在中间件里。
缺点:在转码区无法直观看到转码效果,只有在点击“上传”的时候才会生效。 :::

总结

方法一:上手容易,无需额外学习。推荐指数:★★★★★
方法二:上手容易,但是代码量太大会影响模板的维护。推荐指数:★★
方法三:上手有一定难度,而且不直观,比较偏骇客。推荐指数: ★