参数检查修饰符

argcheck的Python项目详细描述


阿格查克 < BR>
基于decorator的参数检查实现提供了参数验证中的各种功能,其代码主要引用自[zipline/utils/input_validation](https://github.com/quantopian/zipline/blob/master/zipline/utils/input_validation.py)。
**expect_kinds*:decorator检查参数dtype kinds
**expect_types*:decorator检查参数类型
**可选*:helper of*expect_types*处理默认参数
**expect_element*:decorator检查参数是否接受预期元素集中的值
**expect_bounded*和*expect_strially_bounded*:修饰符检查参数是否包含在边界内
**expect_dimensions*:decorator检查参数是否接受具有特定维度的numpy数组
**强制*和*强制类型*:处理类型强制的装饰器 < BR>< BR>
用法
``巨蟒
来自argcheck导入*
< BR>
安装 < BR>
``巨蟒
PIP安装argcheck
< BR>
示例 < BR>< BR>< BR>

``巨蟒
从numpy导入int64、int32、float32 < BR>
@期望种类(x='i')
定义foo(x):
返回x < BR>
foo(int64(2))2
食品(国际32(2))2
foo(浮动32(2))
回溯(最近一次通话时间):

typeerror:…foo()需要参数"x"的"i"类numpy对象,
但是得到了"f"。 < BR>
< BR>
< BR>
``巨蟒
@预期类型(x=int,y=str)
定义foo(x,y):
返回x,y < BR>< BR>
foo(2,'3')(2,'3') < BR>< BR>
食物(2.0,'3')
回溯(最近一次通话时间): ……
typeerror:…foo()需要参数"x"的int类型值,
但取而代之的是浮点数。 < BR>< BR>
< BR>
也可以使用默认参数处理类成员函数 < BR>
``巨蟒
类测试(对象):
@expect_类型(y=(int,str))
定义初始值(self,x,y=3):
通过 < BR>< BR>
测试(x=3)正常
测试(x=3,y=5)
测试(x=1,y=[3])
回溯(最近一次通话时间): ……
typeerror:u init_uu()参数"y"需要int或str类型的值,
但得到了列表 < BR>
< BR>< BR>
< BR>
``巨蟒
IsInstance({},可选(dict))真
IsInstance(无,可选(dict))真
IsInstance(1,可选(dict))false
IsInstance(1,可选(dict,int))真

``巨蟒 < BR>
与expect类型一起使用
类测试2(对象):
@expect_类型(y=可选(int,str))
定义初始化(self,x,y=无):
通过 < BR>< BR>
测试2(3)正常
测试2(3,[2])
typeerror:u init_uu()参数"y"需要int或str或nonetype类型的值,
但得到了列表。 < BR>
< BR>< BR>
< BR>
``巨蟒
@expect_元素(x=('a','b'))
定义foo(x):
返回x.upper() < BR>
foo('a')'a'
foo('c')
valueerror:foo()需要参数"x"的值in('a','b'),
但得到的是"C"。
< BR>< BR>

*边界应作为一对``(最小值,最大值)``传递。
"none"可以作为"min"或"max"传递,表示
输入仅在上面或下面有界。 < BR>
``巨蟒
@期望有界(x=(1,5))
定义foo(x):
返回x+1 < BR>< BR>
食物(3)4 FUO(FUO)(6)
alueerror:foo()应为参数"x"提供一个介于1和5之间的值,
但得到6个 < BR>< BR>
< BR>< BR>
``巨蟒
@期望有界(x=(1,无))
定义foo(x):
返回x+1 < BR>< BR>
食物(3)4 FUO(FUO)(0)
valueerror:foo()参数"x"的值应大于或等于1,
但却得到了0。 < BR>< BR>
< BR>< BR>
< BR>
``巨蟒 < BR>
@期望严格有界(x=(1,5))
定义foo(x):
返回x+1 < BR> FUO(FUO)(5)
valueerror:foo()需要参数"x"的一个介于1和5之间的值,
但是得到了5个。
< BR>< BR>
< BR>
``巨蟒 < BR>
来自numpy导入数组 < BR>
@预期尺寸(x=1,y=2)
定义foo(x,y):
返回x[0]+y[0,0] < BR>
foo(数组([1,1]),数组([[1,1],[2,2],[3,4]])确定
foo(数组([1,1]),数组([[1,1],[2,2]])确定
foo(数组([1,1]),数组([1,1])) < BR>
valueerror:foo()需要参数"y"的二维数组,
但得到的是一维数组。 < BR>
< BR>
< BR>
``巨蟒
@预处理(x=强制(str,int,base=2),y=强制(str,int,base=2))
def add_binary_字符串(x,y):
返回箱(x+y)[2:] < BR>
打印添加二进制字符串('101','001')110 < BR>< BR>
< BR>< BR>

*输入参数:dict[str->;(type,callable)]
*关键字参数将函数参数名映射到
(从'u类型,到'u类型) < BR>
``巨蟒
@强制类型(x=(float,int),y=(int,str)
定义函数(x,y):
返回(x,y) < BR>
函数(1.0,3)(1,'3') < BR>
< BR>
有关详细信息,请参见[示例](/argcheck/example.py)

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

推荐PyPI第三方库


热门话题
Android Studio Java将输入存储在一个文本文件中,所有输入在一行中加载后显示在屏幕上   在我的Java应用程序中记录日志配置   java在将socket从Localhost构建到google时出错。通用域名格式   在java中通过SOAP发送附件   java Tomcat的JspWriter编码不正确   java应用程序在截击StringRequest时不断崩溃   java需要一个保持顺序并具有“顺序敏感”equals/hashCode的映射   Java框架地址栏元素   java如何从特定范围生成4个不重复的数字?   googleappenginejava。安全AccessControlException:拒绝访问(java.io.FilePermission)   加载游戏时java Fabric入口点异常崩溃   java Python我如何读入和读出,以便其他读者可以阅读它以便进一步购买?