python学习--类型注解,inspect模块

类型注解

函数定义的弊端

Python是动态语言,变量随时可以被赋值,且能赋值为不同的类型 Python不是静态编译型语言,变量类型是在运行期决定的 动态语言很灵活,但是这种特性也是弊端:

  • 难发现:由于不做任何类型检查,直到运行期问题才显现出来,或者线上运行时才能暴露出问 题
  • 难使用:函数的使用者看到函数的时候,并不知道你的函数的设计,并不知道应该传入什么类 型的数据

函数注解

Python3.5引入 对函数的参数进行类型注解 对函数的返回值进行类型注解 只对函数参数做一个辅助的说明,并不对函数参数进行类型检查 提供给第三方工具,做代码分析,发现隐藏的bug 函数注解的信息,保存在__annotations__属性中

变量注解

Python3.6引入, 注意它也只是一种对变量的说明,非强制, 是缺省值

  • def add(x:int, y:int=3):

inspect模块

signature签名

sig=inspect.signature(add)获取函数签名
sig.parameters函数的所有参数名称及注解类型
sig.return_annotation返回值注解类型
sig.parameters["x"].annotation对应参数的注解类型

 

判断语法

inspect.isfunction(add)是否是函数
inspect.ismethod(add)是否是类
inspect.isgenerator(add)是否是生成器
inspect.isgeneratorfunction(add)是否是生成器函数
inspect.isclass(add)是否是类
inspect.ismodule(inspect)是否是模块
inspect.isbuiltin(print)是否是内建函数

Parameter对象

保存在元组中,是只读的
name,参数的名字
annotation,参数的注解,可能没有定义
default,参数的缺省值,可能没有定义
empty,特殊的类,用来标记default属性或者注释annotation属性的空值
kind,实参如何绑定到形参,就是形参的类型
	POSITIONAL_ONLY,值必须是位置参数提供
	POSITIONAL_OR_KEYWORD,值可以作为关键字或者位置参数提供
	VAR_POSITIONAL,可变位置参数,对应*args
	KEYWORD_ONLY,keyword-only参数,对应*或者*args之后的出现的非可变关键字参数
	VAR_KEYWORD,可变关键字参数,对应**kwargs

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值