python的 Function Annotations学习笔记

 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}

 

posted @ 2018-01-31 11:51  胖嘟嘟5201314  阅读(388)  评论(0编辑  收藏  举报