功能标注类型规范

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系统。出来打印导致延迟?   java如何使用dasein API连接Azure云(blob存储)   java如何将Jframe cardlayout中的“card”从属于card的Jpanel更改为另一个类?   java如何在单个消息框中显示循环的所有迭代?   java如何设置netbeans保存项目的操作?   java网站的某些选项在web视图中不起作用   java如何在安卓中打开从右到左的菜单滑动条   java更容易反转由静态方法(函数接口)内联创建的比较器?   映射Java HashMap。获取(键)和树形图。获取equals和compareTo方法的(键)用法   java Health endpoints只显示“status:up”,不显示敏感信息   java当我一直按back按钮登录时,字段显示以前插入的用户数据   JTable单元中的java图像显示   go Java vs.Golang for HOTP(rfc4226)   java使用函数链减少分支和清理代码,这有意义吗   java我应该为每个查询创建一个新的DB连接吗?   java推荐的函数调用方法(是否使用CompiledScript?)   java截断分区和地板分区有什么区别?   没有spring引导的java Profile特定属性文件?   异常如何在java中从控制台读取密码?