Function Annotations解释为:函数注释是关于用户定义的函数,使用的类型的完全可选的元数据信息,其实就是对函数的参数以及返回值的注释。
函数注释规则:
1.注释以字典的形式存储在函数的__annotations__
2.参数注释由参数名称后面跟冒号(:)
3.返回用->符号加表达式跟冒号结束
例1:
>>> def f(ham: str, eggs: str = 'eggs') -> str: ... print("Annotations:", f.__annotations__) ... print("Arguments:", ham, eggs) ... return ham + ' and ' + eggs
>>> f('spam') Annotations: {'ham': <class 'str'>, 'return': <class 'str'>, 'eggs': <class 'str'>} Arguments: spam eggs 'spam and eggs'
上面例子中,在定义f()函数时,ham为位置参数(positional argument),eggs为关键字参数(keyword argument),注释ham为strl类型,eggs为str类型。返回值以‘->’标记,例子表明返回值为str,注释可以随便写!!
调用注释用:f.__annotations__
>>> def f(ham:u'ham的注释',eggs:float=12)->'返回值注释': print(ham,eggs) print(f.__annotations__) >>> f(1) 1 12 {'ham': 'ham的注释', 'eggs': <class 'float'>, 'return': '返回值注释'}
上面的例子表示注释可以随便写,仅仅是一个注释。但是一般方便程序阅读,注释用来解释函数
>>> f('your ham',14) your ham 14 {'ham': 'ham的注释', 'eggs': <class 'float'>, 'return': '返回值注释'}
接上面函数,ham=“your ham”,eggs的值变为14,函数运行变化的参数,这表示函数体的参数可以重新赋值
def foo(a: 'x', b: 5 + 6, c: list) -> max(2, 9): ... would result in a func_annotation mapping of {'a': 'x', 'b': 11, 'c': list, 'return': 9}