函数参数的类型检查/验证/统一库。

tvu的Python项目详细描述


#输入值unifier

TVU不会强迫您使用所有可用的类型检查、统一和验证功能,如果您不需要它们,
'bar')


```


会导致从re.match()引发异常,但当使用int而不是string调用foo()时会产生用户错误
。更方便用户获取异常,准确地说是发生了错误,
特别提到了问题所在。

它检查函数参数是否为整数:

`` python
类int tvu(tvu.tvu):
类型=(int,)
````

要实际使用它,可以将整个tvu模块用作函数装饰器,
使用先前定义的int tvu作为参数x的值(它必须与函数参数名匹配):
``python
@tvu(x=inttvu)
def foo(x):
print“我是一个整数%d”%x
````

但如果将其与其他任何东西一起调用,则会产生一个很好的异常:

````
>;>foo('3')
回溯(最近一次调用):
file“test.py”,第12行,in<;module>;
foo('3')
file“/tmp/tvu-0.1/tvu/\tvu.py”,第70行,在内部包装器中,
validator(arg).unify\u validate(args\u值[arg])
file“/tmp/tvu-0.1/tvu/tvu.py”,第38行,unify\u validate
self.type\u check()
file“/tmp/tvu-0.1/tvu/tvu/tvu.py”,第34行,在type“/u check
raise typeerror(errr\u msg)
typeerror:x必须是int,而不是‘3’
``


br/>检查if参数的这种情况一个特定类型的实例可以用一个实例包装器来完成:

``python
@tvu(x=tvu.instance(int))
def foo(x):
print“我是一个整数%d”%x
````

tvu的子类可以在类型元组中提供更多类型,要对照更多可用类型检查参数


`` python
类号tvu(tvu.tvu):
类型=(int,float)

@tvu(x=numbertvu)
def double(x):
返回2*x
```
统一
统一的目标是允许更广泛地选择类型作为函数参数,
在将值/类型提供给函数之前,

例如,在python2中,您可能需要一个unicode文本参数,但不希望
在纯字符串仅为ascii时不鼓励使用它们。下面的tvu
允许您只考虑unicode值,但仍然允许ascii字节字符串:

`` python
类文本(tvu.tvu):

类型=(unicode,str)

def unify(self,value):
如果是instance(value,str):
尝试:
返回值。解码('ascii')
除了unicode decode error:
自身错误(u'unicode text,或ascii only bytestring')
返回值

@tvu(x=text)
def write(x):
打开('/tmp/text.txt',“wb”)作为f:
f.write(x.encode('utf-8'))


write(u'380;ów')
write('ascii')
`````


>更好的文本版本可用作tvu.tvu.text

整数:

`` python
类正整数(tvu.tvu):
类型=(int,)

def validate(self,value):
如果value<;=0:
self.error('正数')
`````

常见问题解答
**如何安装?**

pip install tvu
***但是python是关于duck类型的?没有任何阻止你用TVU在鸭子打字方式中通过检查
在TVU.ValueTest[Audio()方法中存在的方法。

tvu已经用python-2.7和python-3.6进行了测试

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

推荐PyPI第三方库


热门话题
将输入迷宫文件中的字符存储到2d数组(Java)   Vaadin中的java CDi未注入:NullPointerException   两个java日期之间的差异   java如何使用@patch使用jpa存储库更新单个字段   java GeoWebCache和osmdroid   Java:如何让对象侦听器在不同的类中工作?   对象的java子集   安全性无法在Java中设置客户端X509身份验证   java如何在安卓中将唯一的单词绑定到字符串   java如何读取txt并通过管道对其进行分隔   java如何避免if   java JSP带有一个HTML表,需要更新该表   java HashMap<String,Value>。remove()通过使用字符串同步。在钥匙上,这有用吗?还是这个坏代码?   java我的继承有问题