0
点赞
收藏
分享

微信扫一扫

python函数参数中的冒号与箭头

大自然在召唤 2023-02-23 阅读 104

其实函数参数中的冒号是参数的类型建议符,告诉程序员希望传入的实参的类型函数后面跟着的箭头是函数返回值的类型建议符,用来说明该函数返回的值是什么类型

更官方的解释:此为type hints,是Python 3.5新加的功能,作用如上所述,官方文档为 ​​https://www.python.org/dev/peps/pep-0484/​​

值得注意的是,类型建议符并非强制规定和检查,也就是说即使传入的实际参数与建议参数不符,也不会报错。我认为类型建议符的作用更多的体现在软件工程方面:在多人合作的时候,我们对他人开发的代码并不熟悉,没有对类型的解释说明的话,往往需要花费更多的时间才能看出函数的参数和返回值是什么类型,有了说明符,可以方便程序员理解函数的输入与输出(具体涉及到的工作,比如静态分析与代码重构)。

下面我们以一个简单的函数twoSum为例

#!/usr/bin/python3
# -*- coding:utf-8 -*-

def twoSum(num1: int, num2: int=100) -> int:
sum = num1 + num2
return sum


if __name__ == "__main__":
print(twoSum.__annotations__)
print(twoSum(1,2))
print(twoSum(1))
print(twoSum('I love ','Arsenal'))
#print(twoSum('Arsenal'))

{'num1': <class 'int'>, 'num2': <class 'int'>, 'return': <class 'int'>}
3
101
I love Arsenal

 

几点解释:

  • 第一行输出中的__annotations__是函数的保留属性,保存的是函数声明中的注释内容,比如我们使用的对参数"num1","num2"和返回值的建议类型。
  • 第二行输出是正常用法。
  • 第三行输出验证了:注释内容后可以跟等号"=",意思为未传入实参时,该参数获得的默认值
  • 第四行输出则验证了该解释说明符并非强制检查,我们传入了两个str实参,并不会报错,而是继续进行函数中的加法运算。如果传入的两个实参无法进行函数中规定的运算,则会正常报错。

def f(text:str,max_len:'int>0'=80) ->str:
"""这个是函数的帮助说明文档,help时会显示"""
return True

函数声明中,text:str

text 是参数 :冒号后面  str是参数的注释

如果参数有默认值,还要给注释。

max_len:'int>0'=80,=后表示默认值。

->str 是函数返回值的注释

这些注释信息都是函数的元信息,保存在f.__annotations__字典中。

需要注意,python对注释信息和f.__annotations__的一致性,不做检查

不做检查,不做强制,不做验证!什么都不做。


参考文章:

​​https://www.cnblogs.com/ArsenalfanInECNU/p/10724203.html​​

​​https://blog.csdn.net/sunt2018/article/details/83022493​​

举报

相关推荐

0 条评论