功能标注类型规范

typespec的Python项目详细描述


typespec
==


typespec是两件事:

1。函数注释的格式规范。用于分析遵循此规范的批注的模块。

typespec格式
----


typespec格式使用标准的python数据结构来指定对象类型。可以识别以下类型:

*``str`-这是人类可读的文档。

*``type`-这是一种类型/类,一致性对象可以是其实例。如果对象是指定类型之一的实例或通过验证类的验证,则该对象符合类型规范。

*`` tuple``这是其他str、类型和tuple的组合。分组类型和未分组类型之间没有语义差异,但分组str是仅适用于同一分组中的类型的文档。


~~~~~~~~~~~~~~~


仅限人类可读文档-未定义类型限制::

"值的某些描述"



>必须是字符串的值::




记录的字符串值:

(str,"字符串内容含义的描述")




可以是字符串或数字的值:

(str,int,float)




是一个字符串或带有特定类型文档的数字:


(str,"字符串内容含义的描述"),
(int,float,"数字代表什么?")



验证类
~~~~~~~~~~~~~~~~~~~~~~~~~

有时需要检查的不仅仅是对象的类型。
为此,可以在类型规范中定义和使用验证类。
validati在类上是具有"validate"方法的类。
在根据验证类验证对象之前,会检查
对象是否是验证类的基类(validationClass.\u base)的实例。为了验证一个值,validation类被
作为唯一的参数用该对象实例化(所以它应该有一个
`````````````in it``方法定义,比如:``def```init``(self,val):```),然后在生成的ob上调用
```````validate``方法对象。
如果返回真值,则视为对象有效,否则视为无效。


示例:



类positivefloat(float):
定义验证(self):
返回self>;0.0


类positivenumber(object):
定义初始化(self,val):
self.val=val

定义验证(self):
如果是实例(self.val,int):
返回正数(self.val)。
如果是实例(self.val,float):
返回正数(self.val)。类单字符字符串(str):
定义验证(self):
返回len(self)==1


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

类型规范可用于函数批注。对于参数注释,它指定参数的类型。对于返回注释,它指定返回/产生的对象的类型。


示例:


def add_chars(
a:singlecharacterstring,
b:singlecharacterstring)->;singlecharacterstring:
'
添加2个字符的序数值,并返回具有该序数值的字符。
'
返回chr(ord(a)+ord(b))

def sum(a:(int,float),b:(int,float))->;float:
返回float(a+b)

def install_python(
路径:(str,"python应该安装到的文件路径"),
版本:(str,"python要安装的版本")="3.2"
)->;(bool,"true"如果成功,则为False(如果不成功):python安装代码yield ord(c)


typespec模块
----



typespec模块提供简单实用程序,用于根据
typespec验证值。


根据类型规范检查对象:

>;在类型规范typespec((int,float))中使用in运算符
>;>1
true
>;>;"hello"在类型规范typespec((int,float))
false

列出typespec中的类型::

>;>;>;只需遍历typespec对象
>;>;已排序(typespec.typespec中t的t.\u name\uu((int,str,"doc"))
['int,'str']

文档:

>>>使用doc方法
>;typespec.typespec("某些文档").doc()
"某些文档"
>>>我的规范=typespec.typespec((
…(str,"字符串内容含义的描述"),
…(int,float,"数字代表什么?")
…)
>;>my_spec.doc()
"
>;>my_spec.doc(str)
‘字符串内容含义的描述’
>;>my_spec.doc(int)
‘数字代表什么?’
>>>我的说明文档(浮动)
"数字代表什么?"

有关更多详细信息,请参阅模块文档。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何从servlet向所有登录用户发送数据   java为什么需要ScheduledExecutorService。shutdown()使用我100%的CPU吗?   用于计算ArrayList中重复项的java嵌套循环无法正常工作   如何获取使用audioinputstream java下载文件的进度   java Kurento复合网格记录   识别方法的java问题   java on Markerclick listener绘制路线并计算距离   java在API级别16上创建/生成R.id   java如何修复HQL查询中的“意外令牌”错误   Java创建损坏的ZIP文件   JavaGSON。如何将json对象转换为json数组?   java需要配置Spring安全性和Hibernate   Vowpal Wabbit的Java API?