python--Function Annotation 函数变量与返回值的注释

有时我们查看某个模块的源码时,会看到一些函数出现如下情况:

def foo(a: 'x', b: 5 + 6, c: list) -> max(2, 9):
    ...

我很不理解这参数后边的冒号,以及后边的箭头都是什么意思,查看了PEP 3107 – Function Annotations才知道这是函数注释。

总结下几个特点:

  1. 函数中的变量注释,就用冒号加上注释内容即可,如foo(x : int)
  2. 如果函数的参数是默认参数,其写法如下
def foo(a: int = 10, b: str = "some str") -> str:
    ...

  1. 箭头后边,表示返回值的类型或者对返回值的说明
  2. 这些注释仅仅是一个说明,对真正的使用没有影响,比如注释是int,输入的却是str,其一样是可以运行的。
  3. 要注意:匿名函数lambda是不支持这种函数注释的。

附上几个文档的例子:

Parameters

def foo(a: expression, b: expression = 5):
    ...
def foo(*args: expression, **kwargs: expression):
    ...
def foo((x1, y1: expression), (x2: expression, y2: expression)=(None, None)):
    ...

Return Values

def sum() -> expression:
    ...

可以通过foo.__annotations__查看注释内容

>>> def foo(a: 'x', b: 5 + 6, c: list) -> max(2, 9):
...     pass
...
>>> foo.__annotations__
{'a': 'x', 'b': 11, 'c': <class 'list'>, 'return': 9}
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值