在读python项目代码是遇到了如下的写法 :
class EWiseAdd(TensorOp):
def compute(self, a: NDArray, b: NDArray):
return a + b
def gradient(self, out_grad: Tensor, node: Tensor):
return out_grad, out_grad
其中参数表中包含引号 :
, 查阅资料和博客后解释如下.
- python定义函数时在参数是不需要有类型说明的, 这与如cpp需要规定参数类型不同. 这在带来方便的同时, 也为阅读和使用代码带来了一些困难 ;
- python中使用两个符号来说明参数类型和返回值类型
- 冒号
:
, 如add(a:'int', b:'int')
, 为参数类型建议符 ; - 箭头
->
, 如add(a:'int', b:'int')->'int'
, 为函数返回值类型建议符 ;
- 冒号
- 注意 : 这里只是"建议", 并不完全同
C++
是将类型作为要求, 也就是即便与建议类型不符, 也不会报错 ;