[PY3]——函数——函数注解 | 实现类型检查功能
函数注解(Function Annotations)——> 可以在定义函数的时候对参数和返回值添加注解
写函数注解
#平时我们使用help()可以查看一个函数的说明,我们自己写的函数也可以提供这样的说明 #第一种方式:直接在函数内 '''写文本''' def add(x,y):
'''x+y
@:param x int
@:param y int
@return int
'''
return x+y #print(help(add))
Help on function add in module __main__:
add(x, y)
x+y
@:param x int
@:param y int
@return int
(END) # 第二种方式:更常用,是python中的函数注解语法
# 参数:类型 或 参数:"说明文本" -> 返回值类型
def add(x:int,y:"It's a int") ->int:
return x+y()
print(help(add))
Help on function add in module __main__:
add(x:int, y:"It's a int") -> int
(END)
查看函数注解
function.__annotations__
# function.__annotations__
print(sum.__annotations__)
#{'return': <class 'int'>, 'lst': typing.List<~T>[int]}
inspect.signature
# inspect.signature
import inspect # 获取函数注解
sig=inspect.signature(add)
print(sig)
#(x:int, y:"It's a int") -> int # 获取函数参数(其输出是个有序字典)
print(sig.parameters)
#OrderedDict([('x', <Parameter "x:int">), ('y', <Parameter "y:"It's a int"">)]) ## 获取指定参数注解 ##
# 法1:
print(sig.parameters['x'])
#x:int
# 法2:
print(sig.parameters['x'].annotation) #即利用parameters输出的有序字典来访问
#<class 'int'> ## 获取返回值注解 ##
print(sig.return_annotation)
#<class 'int'> print(sig.parameters.values())
#odict_values([<Parameter "x:int">, <Parameter "y:int">])
[PY3]——函数——函数注解 | 实现类型检查功能的更多相关文章
- Java泛型函数的运行时类型检查的问题
在一个数据持久化处理中定义了数据保存和读取的 泛型函数的,但是在运行时出现类型转换错误,类型不匹配,出错的位置不是load方法,而是在调用load方法之后,得到了列表数据,对列表数据进行使用时出现的. ...
- Python 带参数的装饰器 [2] 函数参数类型检查
在Python中,不知道函数参数类型是一个很正常的事情,特别是在一个大项目里.我见过有些项目里,每一个函数体的前十几行都在检查参数类型,这实在是太麻烦了.而且一旦参数有改动,这部分也需要改动.下面我们 ...
- Python 加入类型检查
Python 是一门强类型的动态语言, 对于一个 Python 函数或者方法, 无需声明形参及返回值的数据类型, 在程序的执行的过程中, Python 解释器也不会对输入参数做任何的类型检查, 如果程 ...
- React文档(十五)使用propTypes进行类型检查
注意: React.PropTypes 自 React v15.5 起已弃用.请使用 prop-types 库代替. 随着你的应用的开发,你会使用类型检查的方法来捕获很多bug.对于一些应用,你可以使 ...
- JAVA 7新特性——在单个catch代码块中捕获多个异常,以及用升级版的类型检查重新抛出异常
在Java 7中,catch代码块得到了升级,用以在单个catch块中处理多个异常.如果你要捕获多个异常并且它们包含相似的代码,使用这一特性将会减少代码重复度.下面用一个例子来理解. Java 7之前 ...
- sql server 之函数小技巧 && 整数类型为空是用空字符串替代实现
1.判空函数 说明:使用指定的替换值替换 NULL. 语法:ISNULL ( check_expression , replacement_value ) 参数: check_expression:将 ...
- Python中利用函数装饰器实现备忘功能
Python中利用函数装饰器实现备忘功能 这篇文章主要介绍了Python中利用函数装饰器实现备忘功能,同时还降到了利用装饰器来检查函数的递归.确保参数传递的正确,需要的朋友可以参考下 " ...
- 03C++语言对C的增强——实用性、变量检测、struct类型、C++中所有变量和函数都必须有类型、bool类型、三目运算符
1.“实用性”增强 C语言中的变量都必须在作用域开始的位置定义,C++中更强调语言的“实用性”,所有的变量都可以在需要使用时再定义. 2.C++对c语言register的增强 register关键字 ...
- C++ Primer学习笔记(三) C++中函数是一种类型!!!
C++中函数是一种类型!C++中函数是一种类型!C++中函数是一种类型! 函数名就是变量!函数名就是变量!函数名就是变量! (---20160618最新消息,函数名不是变量名...囧) (---201 ...
随机推荐
- Tempdb--查看TempDB上是否需要增加文件
SELECT [owt].[session_id], [owt].[exec_context_id], [owt].[wait_duration_ms], [owt].[wait_type], [ow ...
- 调整Linux最大打开文件数
#!/bin/bash ## 文件数限制 ulimit -n ulimit -Sn ulimit -Hn ## fs.nr_open,进程级别 ## fs.file-max,系统级别 ## 最大文件描 ...
- dockerfile构建redis
-------------------------------------------------------------
- python中的内置函数(一), lambda, filter, map
https://www.processon.com/view/link/5c10da0ce4b099ae3e137bf6 1.内置函数 内置函数就是python中提供的,可以直接拿来用的函数,比如pr ...
- 201621123023《Java程序设计》第13周学习总结
一.本周学习总结 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. 二.为你的系统增加网络功能(购物车.图书馆管理.斗地主等)-分组完成 为了让你的系统可以被多个用户通过网络同 ...
- “全栈2019”Java异常第十章:throw与throws区别详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java异 ...
- Python面向对象(定义类和创建对象)
day24 http://www.cnblogs.com/wupeiqi/p/4493506.html Python:函数式+面向对象,函数式编程可以做所有事,但是不一定合适. 小明,10岁,男,上山 ...
- 为解决Samba windows 无法访问 尝试过的方法
1, 通过 vi /etc/sysconfig/selinux 把 SELINUX=enforcing 修改为SELINUX= disable 退出保存,并且重启.(设置了) 2, 把wind ...
- django在model中添加字段报错
在以下类中添加 description 字段后, class Colors(models.Model): colors = models.CharField(u'颜色', max_length=10) ...
- 腾讯云服务器安装宝塔面板快速配置LNMP/LAMP网站系统
我们在选择购买腾讯云服务器之后,有部分用户肯定是用来建站用途的.毕竟云服务器的性能和功能比虚拟主机优秀很多.腾讯云服务器拥有香港.北京.广州.上海.美国等多个机房,可以安装Linux和Windows系 ...