函数参数的类型检查/验证/统一库。
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进行了测试
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进行了测试