Cube为基于用户分层设计理念、自研的、面向办公自动化领域的低代码编程语言,在数据类型方面与Python语言有差异。在Python模式中使用Cube库时,底层代码会进行装箱、拆箱操作,本文将为您介绍Cube与Python的数据类型及对应关系。
# 基本概念
装箱
将Python常规类型(如int,str等)数据转换成Cube常规类型数据,或者是将Cube非常规类型数据对外生成唯一的ref值。
拆箱
将Cube常规类型数据转换成Python常规类型(如int,str等)数据,或者是将ref值恢复为Cube非常规类型数据。
可变数据类型
当该数据类型的对应变量的值发生了改变,对应的内存地址不发生改变。
不可变数据类型
当该数据类型的对应变量的值发生了改变,对应的内存地址也会发生改变。
# Cube数据类型
Cube函数支持以下10种数据类型:
- Cube.Lang.Number:数字类型
- Cube.Lang.Boolean:布尔类型
- Cube.Lang.String:文本类型
- Cube.Lang.List:列表类型
- Cube.Lang.DataTable:数据表类型
- Cube.Lang.KeyValue:键值对类型
- Cube.Lang.Binary:二进制编码
- Cube.Lang.DateTime:日期时间类型
- Cube.Lang.Null:空对象类型
- Cube.Lang.PythonObject:Python类型
# Python数据类型
Python 3中定义了以下8种数据类型:
数字(number)
Python 3支持 int、float两种数字类型。布尔型(bool)
True和False为布尔型关键字,值为1和0,可以和数字相加。字符串(str)
字符串是以单引号'或双引号""括起来的任意文本。如果'本身也是一个字符,可以用""括起来,例如"I'm OK"表示I,',m,空格,O,K6个字符;如果字符串内部既包含'又包含"可以用转义字符\来标识,例如'I\'m \"OK\"!'表示的字符串内容是I'm "OK"!;转义字符\可以转义很多字符,例如\n表示换行,\t表示制表符,字符\本身也要转义,所以\\表示的字符就是\。如果字符串里面有很多字符都需要转义,就需要加很多\,为了简化,Python还允许用r''表示''内部的字符串默认不转义,例如r'\\\t\\'表示\\\t\\。列表(list)
列表是写在方括号[]之间、用逗号,分隔开的有序元素列表。列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表(即嵌套),例如list1 = ['CubeRPA', 123 , 6.30, '壹沓科技', 6.4]。元组(tuple)
元组(tuple)与列表类似,不同之处在于元组的元素不能修改。元组写在小括号()里,元素之间用逗号,隔开。元组中的元素类型也可以不相同,例如tuple1 = ('CubeRPA', 123 , 6.30, '壹沓科技', 6.4)。集合(set)
集合(set)是由一个或多个形态各异的大小整体组成的,构成集合的事物或对象称为元素或成员,基本功能是进行成员关系测试和删除重复元素。可以使用大括号{}或者set()函数创建集合,创建一个空集合必须用set()而不是{},因为{}用于创建一个空字典。集合示例:set1 = {'Tom', 1, 'Mary', 'Tom', 'Jack', 'Rose'}。字典(dictionary)
字典是一种映射类型,用大括号{}标识,它是一个无序的键(key) : 值(value)对集合。键(key)必须使用不可变类型,并且在同一个字典中,键(key)必须是唯一的。字典示例:
说明:Python 3.6及以上版本字典有序。
- 字节类型(bytes)
字节类型可用于处理底层应用(例如socket编程),声明方式为在字符串的字面量表示前加上b字母,例如bt = b"Hello World"。
其中:
- 不可变数据类型(5个):数字(number)、字符串(str)、元组(tuple)、字节类型(bytes)、布尔型(bool)
- 可变数据类型(3个):列表(list)、集合(set)、字典(dictionary)
# 装箱拆箱
| Cube | Python |
|---|---|
| Cube.Lang.Number |
|
| Cube.Lang.Boolean | bool |
| Cube.Lang.String | str |
| Cube.Lang.List | list |
| Cube.Lang.DataTable | list<list> |
| Cube.Lang.KeyValue | dictionary |
| Cube.Lang.Binary | bytes |
| Cube.Lang.DateTime | datetime.datetime |
| Cube.Lang.Null | None |
| Cube.Lang.PythonObject | 无 |
说明:
- None表示空值,它是一个特殊Python对象,类型是NoneType。
- Cube.Lang.PythonObject用于承接⽆Cube类型映射的Python数据类型。该类型数据只能在调用Python文件组件中作为参数传入代码使用,在其他可视化组件使用时会在运行过程中提示
Cube.PythonObject类型数据只可以在调用Python组件中作为入参的数据传入Pytho代码进行使用的错误。