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

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

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

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

def func(a,b):
return a+b print(func(1, 2))
#

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

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

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

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

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

def func(a: 'haha', b: (1, 10), c: float) -> int:
return a + b + c
print(func(1, 2, 3))
print(func.__annotations__)
#
#{'a': 'haha', 'b': (1, 10), 'c': <class 'float'>, 'return': <class 'int'>}

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

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

python3新特性函数注释Function Annotations用法分析的更多相关文章

  1. systemd的新特性及unit常见类型分析与awk用法示列

    简述systemd的新特性及unit常见类型分析,能够实现编译安装的如nginx\apache实现通过systemd来管理 系统引导的新特性 系统引导时实现服务启动: 按需激活进程: 系统状态快照: ...

  2. 会报编译器警告的Xcode 6.3新特性:Nullability Annotations

    最近在用Xcode 6.3写代码,一些涉及到对象的代码会报如下编译器警告: 1 Pointer is missing a nullability type specifier (__nonnull o ...

  3. python笔记之常用模块用法分析

    python笔记之常用模块用法分析 内置模块(不用import就可以直接使用) 常用内置函数 help(obj) 在线帮助, obj可是任何类型 callable(obj) 查看一个obj是不是可以像 ...

  4. Python3新特性 类型注解 以及 点点点

    Python3新特性 类型注解 以及 点点点 ... Python3 的新特性 Python 是一种动态语言,变量以及函数的参数是 不区分类型 的 在 函数中使用类型注解 相当于 给 形参的 类型 设 ...

  5. 浅谈Spring框架注解的用法分析

    原文出处: locality 1.@Component是Spring定义的一个通用注解,可以注解任何bean. 2.@Scope定义bean的作用域,其默认作用域是”singleton”,除此之外还有 ...

  6. json-lib与Jackson的区别和用法分析

    一.Jackson概述 1.jackson包和版本 Jackson fasterxml和codehaus的区别: 他们是Jackson的两大分支.也是两个版本的不同包名.Jackson从2.0开始改用 ...

  7. Python内置函数reversed()用法分析

    Python内置函数reversed()用法分析 这篇文章主要介绍了Python内置函数reversed()用法,结合实例形式分析了reversed()函数的功能及针对序列元素相关操作技巧与使用注意事 ...

  8. boost::function的用法

    本片文章主要介绍boost::function的用法. boost::function 就是一个函数的包装器(function wrapper),用来定义函数对象. 1.  介绍 Boost.Func ...

  9. java String.split()函数的用法分析

    java String.split()函数的用法分析 栏目:Java基础 作者:admin 日期:2015-04-06 评论:0 点击: 3,195 次 在java.lang包中有String.spl ...

随机推荐

  1. Linux 计划任务管理

    实际的生产环境中,总会做一些定期的任务,比如数据备份,我们不可能总等到那个时间去手动执行,这时计划任务就派上用场了. 一次性计划任务 at 一次性计划任务 at [HH:MM] [YYYY-MM-DD ...

  2. 使用ZeroClipboard 复制指定内容到剪切板

    有些时候,我们希望让用户在网页上完成某个操作就能自动将指定的内容复制到用户计算机的剪贴板中.但是出于安全原因,大多数现代浏览器都未提供通用的剪贴板复制接口(或即便有,也默认被禁用).只有IE浏览器可以 ...

  3. 在Ubuntu系统下连接远程服务器并传输文件

      原文链接:https://blog.csdn.net/u013250416/article/details/78075590 一. 连接远程Ubuntu服务器. 1. 打开命令行,输入 : sud ...

  4. vue 使用moment

    1.下载 cnpm i moment --save 2.main.js  挂载 import moment from 'moment'//导入文件 Vue.prototype.$moment = mo ...

  5. sklearn.model_selection 的train_test_split方法和参数

    train_test_split是sklearn中用于划分数据集,即将原始数据集划分成测试集和训练集两部分的函数. from sklearn.model_selection import train_ ...

  6. 动手搭建codecombat服务

    # 因为后面需要使用浏览器访问 127.0.0.1:3000去获取管理员控制权,所以需要一个图形化的界面. yum install net-tools -y   yum groupinstall &q ...

  7. typeScript学习随笔(一)

    TypeScript学习随笔(一) 这么久了还不没好好学习哈这么火的ts,边学边练边记吧! 啥子是TypeScript  TypeScript 是 JavaScript 的一个超集,支持 es6 标准 ...

  8. 使用python的jira库操作jira的版本单和问题单链接

    操作JIRA的API来实现的. 但感觉比单纯操作API要简单一些. from jira import JIRA from django.conf import settings JIRA_URL = ...

  9. Python - 2和3的区别

    编码: Python2的默认编码是ASCII码,这是导致Python2中经常遇到编码问题的主要原因之一,至于原因,在于Python这门语言出现的时候,还没有Unicode! Python3默认编码是U ...

  10. css 的弱化与 js 的强化(转)

    web 的三要素 html, css, js 在前端组件化的过程中,比如 react.vue 等组件化框架的运用,使 html 的弱化与 js 的强化 成为了一种趋势,而在这个过程中,其实还有另一种趋 ...