静态图语法——运算符

查看源文件

算术运算符和赋值运算符支持NumberTensor运算,也支持不同dtypeTensor运算。

单目算术运算符

单目算术运算符

支持类型

+

NumberTensor,取正值。

-

NumberTensorCOOTensorCSRTensor,取负值。

~

Tensor,且其数据类型为Bool。成员逐个取反。

说明:

  • 在Python中~操作符对输入的整数按位取反; MindSpore对~的功能重新定义为对Tensor(Bool)的逻辑取反。

二元算术运算符

二元算术运算符

支持类型

+

Number + NumberString + StringNumber + TensorTensor + NumberTuple + TensorTensor + TupleList + TensorTensor+ListList+ListTensor + TensorTuple + TupleCOOTensor + TensorTensor + COOTensorCOOTensor + COOTensorCSRTensor + CSRTensor

-

Number - NumberTensor - TensorNumber - TensorTensor - NumberTuple - TensorTensor - TupleList - TensorTensor - ListCOOTensor - TensorTensor - COOTensorCOOTensor - COOTensorCSRTensor - CSRTensor

*

Number * NumberTensor * TensorNumber * TensorTensor * NumberList * NumberNumber * ListTuple * NumberNumber * TupleTuple * TensorTensor * TupleList * TensorTensor * ListCOOTensor * TensorTensor * COOTensorCSRTensor * TensorTensor * CSRTensor

/

Number / NumberTensor / TensorNumber / TensorTensor / NumberTuple / TensorTensor / TupleList / TensorTensor / ListCOOTensor / TensorCSRTensor / Tensor

%

Number % NumberTensor % TensorNumber % TensorTensor % NumberTuple % TensorTensor % TupleList % TensorTensor % List

**

Number ** NumberTensor ** TensorNumber ** TensorTensor ** NumberTuple ** TensorTensor ** TupleList ** TensorTensor ** List

//

Number // NumberTensor // TensorNumber // TensorTensor // NumberTuple // TensorTensor // TupleList // TensorTensor // List

&

Number & NumberTensor & TensorNumber & TensorTensor & Number

Number | NumberTensor | TensorNumber | TensorTensor | Number

^

Number ^ NumberTensor ^ TensorNumber ^ TensorTensor ^ Number

<<

Number << Number

>>

Number >> Number

@

Tensor @ Tensor

限制:

  • 当左右操作数都为Number类型时,不支持Float64Int32间的运算。+-*/%**// 支持左右操作数的值同时为Bool

  • 当任一操作数为Tensor类型时,左右操作数的值不可同时为Bool

  • List/TupleNumber进行*运算时表示将List/Tuple复制Number份后串联起来,List内的数据类型可以是图模式下支持的任意数据类型,也支持多层嵌套。Tuple内的数据类型必须为NumberStringNone,也支持多层嵌套。

赋值运算符

赋值运算符

支持类型

=

MindSpore支持的Python内置数据类型和MindSpore自定义数据类型

+=

Number += NumberString += StringNumber += TensorTensor += NumberTuple += TensorTensor += TupleList += TensorTensor += ListList += ListTensor += TensorTuple += Tuple

-=

Number -= NumberTensor -= TensorNumber -= TensorTensor -= NumberTuple -= TensorTensor -= TupleList -= TensorTensor -= List

*=

Number *= NumberTensor *= TensorNumber *= TensorTensor *= NumberList *= NumberNumber *= ListTuple *= NumberNumber *= TupleTuple *= TensorTensor *= TupleList *= TensorTensor *= List

/=

Number /= NumberTensor /= TensorNumber /= TensorTensor /= NumberTuple /= TensorTensor /= TupleList /= TensorTensor /= List

%=

Number %= NumberTensor %= TensorNumber %= TensorTensor %= NumberTuple %= TensorTensor %= TupleList %= TensorTensor %= List

**=

Number **= NumberTensor **= TensorNumber **= TensorTensor **= NumberTuple **= TensorTensor **= TupleList **= TensorTensor **= List

//=

Number //= NumberTensor //= TensorNumber //= TensorTensor //= NumberTuple //= TensorTensor //= TupleList //= TensorTensor //= List

&=

Number &= NumberTensor &= TensorNumber &= TensorTensor &= Number

∣=

Number |= NumberTensor |= TensorNumber |= TensorTensor |= Number

^=

Number ^= NumberTensor ^= TensorNumber ^= TensorTensor ^= Number

<<=

Number <<= Number

>>=

Number >>= Number

@=

Tensor @= Tensor

限制:

  • AugAssign的左右操作数都为Number类型时,Number的值不可为Bool 类型。

  • AugAssign的左右操作数都为Number类型时,不支持Float64Int32间的运算。

  • AugAssign的任一操作数为Tensor类型时,左右操作数的值不可同时为Bool

  • List/TupleNumber进行*=运算时表示将List/Tuple复制Number份后串联起来,List/Tuple内对象的元素可以包含任意图模式支持的类型,也支持多层嵌套。

逻辑运算符

逻辑运算符

支持类型

and

StringNumberTupleListDictNone、标量、Tensor。

or

StringNumberTupleListDictNone、标量、Tensor。

not

NumberTupleList、只有一个成员的Tensor。

限制:

  • andor的左操作数必须要能被转换成布尔值。例如:左操作数不能为存在多个元素的Tensor。当andor的左操作数是变量Tensor时,右操作数必须也是同类型Tensor且Tensor成员个数只能有一个。在其余情况下,右操作数无要求。

比较运算符

比较运算符

支持类型

in

Number in TupleString in TupleTensor in TupleNumber in ListString in ListTensor in ListString in DictionaryNumber in Dictionary、常量Tensor in DictionaryTuple in Dictionary

not in

in相同。

is

仅支持判断是NoneTrue或者False

is not

仅支持判断不是NoneTrue或者False

<

Number < NumberNumber < TensorTensor < TensorTensor < Number

<=

Number <= NumberNumber <= TensorTensor <= TensorTensor <= Number

>

Number > NumberNumber > TensorTensor > TensorTensor > Number

>=

Number >= NumberNumber >= TensorTensor >= TensorTensor >= Number

!=

Number != NumberNumber != TensorTensor != TensorTensor != Numbermstype != mstypeString != StringTuple ! = TupleList != List

==

Number == NumberNumber == TensorTensor == TensorTensor == Numbermstype == mstypeString == StringTuple == TupleList == List

限制:

  • 对于<<=>>=!=来说,当左右操作数都为Number类型时,Number的值不可为Bool 类型。

  • 对于<<=>>=!===来说,当左右操作数都为Number类型时,不支持Float64Int32间的运算。

  • 对于<<=>>=!===来说,当左右任一操作数为Tensor类型时,左右操作数的值不可同时为Bool

  • 对于==来说,当左右操作数都为Number类型时,支持左右操作数同时为Bool,不支持只有一个操作数为Bool

  • 对于!===来说除mstype外,其他取值均可和None进行比较来判空。

  • 不支持链式比较,如: a>b>c