帮助文档

前往官网
最新更新时间:2023-05-09 11:51:19

简介

在表达式模式下,用户可以输入一个合法的 Python 表达式以返回所需要的数据。表达式模式经过针对性优化,提供智能提示功能简化了用户输入的同时,性能相较代码模式进一步获得提升。

IDE 使用

对于任意 Dataway 编辑文本框,将鼠标移至编辑文本框,会自动弹出模式选择按钮,单击表达式模式,再点击文本框即可填写表达式。

 

  • 语法检查
    在 Dataway 交互界面中,能够实时对表达式进行语法检查,如果出错,将标红文本框,并在文本框下侧提示错误。
    用户可以根据错误提示来对表达式进行修改,只有当流中所有表达式均通过语法检查才能进行发布。

 

  • 自动补全
    在编辑框中进行输入时,Dataway 交互界面能够根据当前上下文自动给出语法提示和可行补全方案,并展示在文本框的上/下侧。用户可以通过点选对应标签快速补全表达式。语法提示的范围包括属性、方法、内置函数和第三方模块。

  • 集成流数据面板引用
    表达式模式支持 集成流数据面板 引用功能,详情请见 集成流数据面板

  • 类型转换
    除了部分组件对 Dataway 交互界面有特殊要求外,表达式模式支持便捷类型转换功能。用户可以通过点选文本框左侧的下拉菜单中所需的数据类型,对表达式输出结果进行显式的类型转换,强制其符合用户对数据类型的使用需求。类型选择默认为 any,即不进行类型转换。

语法

表达式模式对标 Python3 语法的 eval() 函数以降低用户使用门槛。与代码模式一致,表达式模式可以通过 msg ( Message 类型) 引用当前的集成流消息。同时,表达式模式支持 集成流数据面板 快捷引用前置组件的输出数据。

表达式模式支持的语法结构如下:

表达式分组表达式类型释义举例说明
原子表达式literal字面量"abc"、123、True、b'abc'如 string、int、float、bool、bytes等类型的字面量
name标识符abc从全局上下文中读取指定名称的变量
tuple元组构造('a', 'b', 'c')、(str(1))若至少有一个逗号,则返回元组;否则返回单个表达式的值
list列表构造[1,2,3]枚举元素,构造一个列表
list-comp列表推导式[i for i in 'abc']通过推导构造一个列表
set集合构造{1,2,'a'}枚举元素,构造一个集合
set-comp集合推导式{i for in 'abc'}通过推导构造一个集合
dict字典构造{1:2, 'a':'b', 3.0:True}枚举元素,构造一个字典
dict-comp字典推导式{i:ii for i in range(10)}通过推导构造一个字典
generator生成器构造(kk for k in range(10))返回一个生成器
原型表达式attr属性引用msg.payload返回属性
index容器下标取值msg.payload[1]、msg.vars['a']指定下标
slice切片下标msg.payload[1:3]指定下标
call调用str('a')函数调用
数学表达式binop二元操作符33、3+3、'a' is not in msg.vars幂运算()、算数运算(+、-、*、/、//、%)、移位运算(>>、<<)、位运算(&、^、|)、比较运算(>、>=、<、<=、==、!=、is、is not、in、not in)
uniop一元操作符not msg.vars、~msg.vars['no']取自身+、取负-、取反~、逻辑非not
条件表达式if-expr条件表达式'a' if 's' in msg.vars else 'b'xx if True else xx
logical逻辑表达式a and b、not True布尔运算(and、not、or)
特殊表达式dataref数据引用通过下拉点选自动生成对应标签从上下文数据中引用指定路径的数据

数据类型

表达式模式在 Python 原生类型的基础上充分支持腾讯轻联 核心类型,对于已绑定轻联核心类型的数据类型,其数据可以在组件与 Dataway 之间自由流通。
数据类型绑定数据连接器核心类型特性使用特性类型特性功能输出类型
int整数+操作符加法int
-操作符减法int
操作符乘法int
/操作符除法float
//操作符整除int
%操作符取余int
-x操作符取反int
&操作符按位与int
|操作符按位或int
操作符按位异或int
~操作符按位取反int
<<操作符左移int
>>操作符右移int
<操作符小于bool
>操作符大于bool
<=操作符小于等于bool
>=操作符大于等于bool
==操作符等于bool
!=操作符不等于bool
str字符串+操作符拼接str
操作符重复str
[index]下标操作取指定index的值str
[index1:index2]下标操作取切片str
[index1:index2:step]下标操作按步长取切片str
in操作符是否子串bool
%操作符格式化str
==操作符等于bool
!=操作符不等于bool
bool布尔值or操作符bool
and操作符bool
not操作符取反bool
==操作符等于bool
!=操作符不等于bool
float浮点数+操作符加法float
-操作符减法float
操作符乘法float
/操作符除法float
//操作符整除float
%操作符取余float
-x操作符取反float
<操作符小于bool
>操作符大于bool
<=操作符小于等于bool
>=操作符大于等于bool
==操作符等于bool
!=操作符不等于bool
bytes(非核心类型)+操作符拼接bytes
操作符重复bytes
[index]下标操作取指定index的值int
[index1:index2]下标操作取切片bytes
[index1:index2:step]下标操作按步长取切片bytes
in操作符是否子串bool
%操作符格式化bytes
==操作符等于bool
!=操作符不等于bool
list列表+操作符拼接list
操作符重复list
[index]下标操作取指定index的值any
[index1:index2]下标操作取切片list
[index1:index2:step]下标操作按步长取切片list
in操作符是否元素bool
<操作符逐项小于bool
>操作符逐项大于bool
<=操作符逐项小于等于bool
>=操作符逐项大于等于bool
==操作符等于bool
!=操作符不等于bool
dict字典[key]下标操作取指定key的值any
==操作符等于bool
!=操作符不等于bool
set(非核心类型)&操作符交集set
|操作符并集set
-操作符减法set
<操作符是否真子集bool
>操作符是否真超集bool
<=操作符是否子集bool
>=操作符是否真超集bool
in操作符是否元素bool
==操作符等于bool
!=操作符不等于bool
decimal.Decimal十进制+操作符加法decimal
-操作符减法decimal
操作符乘法decimal
/操作符除法decimal
%操作符取余decimal
-x操作符取反decimal
<操作符小于bool
>操作符大于bool
<=操作符小于等于bool
>=操作符大于等于bool
==操作符等于bool
!=操作符不等于bool
datetime.datetime时刻year属性int
month属性int
day属性int
hour属性int
minute属性int
second属性int
microsecond属性微秒int
+操作符推进datetime.datetime
-操作符求时间间隔datetime.timedelta
<操作符小于bool
>操作符大于bool
<=操作符小于等于bool
>=操作符大于等于bool
==操作符等于bool
!=操作符不等于bool
datetime.date日期year属性int
month属性int
day属性int
strftime(format)方法格式化str
+操作符推进datetime.date
-操作符求时间间隔datetime.timedelta
<操作符小于bool
>操作符大于bool
<=操作符小于等于bool
>=操作符大于等于bool
==操作符等于bool
!=操作符不等于bool
datetime.time时钟hour属性int
minute属性int
second属性int
microsecond属性微秒int
<操作符小于bool
>操作符大于bool
<=操作符小于等于bool
>=操作符大于等于bool
==操作符等于bool
!=操作符不等于bool
Entity二进制实体from_bytes(bs,mime_type=None, encoding="utf-8")静态方法从二进制构建EntityEntity
from_value(obj,mime_type=None, encoding="utf-8")静态方法从数据构建EntityEntity
get(key,dafault=None)方法获取数据any
[key]下标操作取指定key的值any
[value]下标操作取解析后的值any
[^blob]下标操作取二进制原始数据bytes
RecordSet数据集schema()方法获取schemadict
Record单条数据[key]下标操作取指定key的值any
Message消息payload属性返回输出any
attrs属性返回属性dict
vars属性返回变量dict
id属性返回消息唯一标志str
seq_id属性返回流序列号str
error属性返回错误dict
isthrowing属性是否抛错bool

其他支持

表达式模式提供多样的类型方法、内置函数和第三方模块,用户可以按需选用,快速实现既定功能,详情请参阅 表达式模式附录

如果您在文档使用中遇到问题或者有改进建议,请点击 在线反馈