本文共 911 字,大约阅读时间需要 3 分钟。
在一些源代码中会碰到类似下面的代码,比较复杂,看了一头雾水
def chain_transform(units: typing.List[Unit]) -> typing.Callable: @functools.wraps(chain_transform) def wrapper(arg): """Wrapper function of transformations composition.""" for unit in units: arg = unit.transform(arg) return arg unit_names = ' => '.join(unit.__class__.__name__ for unit in units) wrapper.__name__ += ' of ' + unit_names return wrapper
其中,@functools.wraps以及装饰器可参考。
对于->在c、c++中表示指针,在Python中通常应用于函数的后面,表示函数的返回类型,方便开发人员的开发,上面的这个例子中,返回类型比较复杂,我们可以改写一下,如下例子就容易理解了
def plug(num1: int,num2: int) -> int: return num1 + num2print(plug(1,3))
在这个例子中,返回类型是int,同时,输入类型也做了限定为整型。虽然,在程序中,对方法输入的类型做了限定,但只限于提示开发人员方法的输入和输出类型是什么,方便开发,如果开发人员在输入中,并按不提示的类型输入,程序以及编译器依然不会报错,例如对上面的这个例子,执行下面输入
print(plug('1','2'))print(plug('a','b'))print(plug('hello',' world'))# 输出# 12# ab# hello world
运行上面的这三个代码,虽然输入是字符串类型,但是程序对输入类型做了转换,不受指定类型的限制,可以正常输出。
转载地址:http://dfktn.baihongyu.com/