copy

语法

copy(obj)

详情

返回 obj 的浅拷贝。即复制最外层结构,内部子对象仍与原对象共享引用。

copy(浅拷贝)和 deepCopy(深拷贝)的区别主要体现在嵌套结构(如元组或 ANY 类型字典)中:

  • 使用 copy 时,子对象的引用会被共享(即子对象的地址保持不变)。
  • 使用 deepCopy 时,所有子对象都会被递归复制,引用也会完全分离。

对 streamTable、keyedStreamTable、latestKeyedStreamTable、haStreamTable、mvccTable、haMvccTable 或 IPC 内存表等特殊表对象执行 copy 后,返回普通内存表;拷贝结果保留数据和表结构,但不保留原对象的特殊表类型及其流式、高可用、MVCC 或 IPC 等行为。schema(result).tableType 返回 "table"。

注:

DolphinDB 中的 copy 函数只支持浅拷贝;而 pandas.DataFrame.copy 函数支持深拷贝和浅拷贝(通过 deep 参数控制)。

参数

obj 可以是任意数据类型。

返回值

返回 obj 的浅拷贝对象。

对于上述特殊表对象,返回普通内存表。

例子

例1. 拷贝向量

x = 1 2 3
a = x.copy()
b = x.deepCopy();

print constantDesc(x[0]).address  // 000000000dd3d640
print constantDesc(a[0]).address  // 000000000cb5a4c0
print constantDesc(b[0]).address  // 000000000de92c20

例2. 拷贝元组

x = ([[1, 2], [3, 4]], "a")
a = x.copy()
b = x.deepCopy();

print constantDesc(x[0]).address  // 000000000c7ce880
print constantDesc(a[0]).address  // 000000000c7ce880
print constantDesc(b[0]).address  // 000000000c89be00

例3. 拷贝 ANY 字典

y = dict(`A`B`C, (1 2, 3 4, 5 6))
c = y.copy()
d = y.deepCopy();

print constantDesc(y[`A]).address  // 000000000c88c450
print constantDesc(c[`A]).address  // 000000000c88c450
print constantDesc(d[`A]).address  // 000000000c7cde00

相关函数:asis, deepCopy