python3新特性函数注释Function Annotations用法分析


Posted in Python onJuly 28, 2016

本文分析了python3新特性函数注释Function Annotations用法。分享给大家供大家参考,具体如下:

Python 3.X新增加了一个特性(Feature),叫作函数注释 Function Annotations

它的用途虽然不是语法级别的硬性要求,但是顾名思义,它可做为函数额外的注释来用。

Python中普通的函数定义如下:

def func(a, b, c):
  return a + b + c
>>> func(1, 2, 3)
6

添加了函数注释的函数会变成如下形式:

def func(a: 'spam', b: (1, 10), c: float) -> int:
  return a + b + c
>>> func(1, 2, 3)
6

注释的一般规则是参数名后跟一个冒号(:),然后再跟一个expression,这个expression可以是任何形式。

返回值的形式是 -> int,annotation可被保存为函数的attributes。

查看所有的annotation,可通过如下语句:

>>> func.__annotations__
{'c': <class 'float'>, 'a': 'spam', 'b': (1, 10), 'return': <class 'int'>}

如果为函数增加了注释,可不可以继续使用默认参数呢?答案是肯定的。

>>> def func(a: 'spam' = 4, b: (1, 10) = 5, c: float = 6) -> int:
...  return a + b + c
...
>>> func(1, 2, 3)
6
>>> func()
15
>>> func(1, c=10)
16
>>> func.__annotations__
{'c': <class 'float'>, 'a': 'spam', 'b': (1, 10), 'return': <class 'int'>}

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python for Informatics 第11章之正则表达式(四)
Apr 21 Python
开源软件包和环境管理系统Anaconda的安装使用
Sep 04 Python
python全栈知识点总结
Jul 01 Python
python中的colorlog库使用详解
Jul 05 Python
Python 多个图同时在不同窗口显示的实现方法
Jul 07 Python
python matplotlib库绘制条形图练习题
Aug 10 Python
Python 私有化操作实例分析
Nov 21 Python
python redis 批量设置过期key过程解析
Nov 26 Python
Tensorflow 多线程设置方式
Feb 06 Python
opencv 图像腐蚀和图像膨胀的实现
Jul 07 Python
django inspectdb 操作已有数据库数据的使用步骤
Feb 07 Python
上手简单,功能强大的Python爬虫框架——feapder
Apr 27 Python
python中的格式化输出用法总结
Jul 28 #Python
Python中字符串的常见操作技巧总结
Jul 28 #Python
Python中不同进制的语法及转换方法分析
Jul 27 #Python
深入理解Python装饰器
Jul 27 #Python
python批量制作雷达图的实现方法
Jul 26 #Python
python 添加用户设置密码并发邮件给root用户
Jul 25 #Python
Python文件夹与文件的相关操作(推荐)
Jul 25 #Python
You might like
php使用ob_flush不能每隔一秒输出原理分析
2015/06/02 PHP
PHP微信网页授权的配置文件操作分析
2019/05/29 PHP
jquery 提交值不为空的元素示例代码
2013/05/10 Javascript
js怎么判断flash swf文件是否加载完毕
2014/08/14 Javascript
详解JavaScript中的表单验证
2015/06/16 Javascript
AngularJS入门教程之数据绑定原理详解
2016/11/02 Javascript
js判断用户是输入的地址请求的路径(实例讲解)
2017/07/18 Javascript
关于vue-resource报错450的解决方案
2017/07/24 Javascript
JS获取子、父、兄节点方法小结
2017/08/14 Javascript
vue2.0设置proxyTable使用axios进行跨域请求的方法
2017/10/19 Javascript
javascript按顺序加载运行js方法
2017/12/01 Javascript
vue 实现类似淘宝星级评分的示例
2018/03/01 Javascript
详解Eslint 配置及规则说明
2018/09/10 Javascript
vue使用lodop打印控件实现浏览器兼容打印的方法
2021/02/07 Vue.js
解决python大批量读写.doc文件的问题
2018/05/08 Python
TensorFlow实现卷积神经网络
2018/05/24 Python
python利用百度AI实现文字识别功能
2018/11/27 Python
在OpenCV里使用特征匹配和单映射变换的代码详解
2019/10/23 Python
python实现引用其他路径包里面的模块
2020/03/09 Python
使用Keras加载含有自定义层或函数的模型操作
2020/06/10 Python
你正在寻找的CSS3 动画技术
2011/07/27 HTML / CSS
详解Canvas事件绑定
2018/06/27 HTML / CSS
斯图尔特·韦茨曼鞋加拿大官网:Stuart Weitzman加拿大
2019/10/13 全球购物
拾金不昧表扬信范文
2014/01/11 职场文书
物理研修随笔感言
2014/02/14 职场文书
马智宇婚礼主持词
2014/03/22 职场文书
党支部群众路线整改措施思想汇报
2014/10/10 职场文书
2014年班组长工作总结
2014/11/20 职场文书
2014年工商所工作总结
2014/12/09 职场文书
捐助感谢信
2015/01/22 职场文书
2015年端午节活动方案
2015/05/05 职场文书
听课评课活动心得体会
2016/01/15 职场文书
资深HR教你写好简历中的自我评价
2019/05/07 职场文书
JS异步堆栈追踪之为什么await胜过Promise
2021/04/28 Javascript
详细谈谈JavaScript中循环之间的差异
2021/08/23 Javascript
教你如何让spark sql写mysql的时候支持update操作
2022/02/15 MySQL