为函数参数实现各种常见的健全性检查。

insanit的Python项目详细描述


在健全性方面,尽管有时被认为是"不健全的",但在某些情况下,我们必须以某种方式对函数参数的值进行健全化。
一个常见的例子是复杂数学模型的实现,例如,对于中文学习。
在这样的情况下,假设arg显式(通过健全检查)通常有助于防止
否则很难找到的错误。

然而,清理参数是单调乏味的,而且,除此之外,常常会不必要地膨胀我们的代码。
因此,为了减轻这一有时必要的麻烦,包'insanity'对函数参数实现各种常见的清理检查,这些检查允许将类型检查为w简单地作为参数的值。



installation
----


这个包可以从pypi安装:
`````
pip install insanity
````


检查,包括大多数通常执行的检查。
所有相应的检查函数都有一些共同点:
-前两个位置参数,称为"arg_name"和"arg_value",除了要清理的参数的名称和已经被交出来了。
-检查函数不提供任何返回值,而是通过引发
"typeerror"或"valueerror"来表示未通过的健全性检查。
-每个check函数都接受一个可选的关键字arg`error\u msg`,它允许指定一个错误消息,该消息将
传递给引发的任何错误,而不是标准消息。



zed arg可能有:
`` python
疯狂。清理类型("some_arg",some_arg,int)
疯狂。清理类型("some_arg",some_arg,[int,float])允许多个类型
```
如果需要清理默认为"none"的可选参数,则可以使用关键字arg`none`allowed`若要指示"none"是允许值,而不是相反的情况:
``python
insanity.sanitize_type("some_arg",some_arg,str,none_allowed=true)
````



可能的值。
在这种情况下,可以通过
[`in sanity.sanitize戥value`](src/main/python/insanity/sanitity戥checks.py戥l458)对参数进行清理(src/main/python/insanity/sanitity戥checks.py戥l458)
此函数接受一些可选参数,但在最常见的情况下,我们只需提供
清理参数可能具有的值作为n`iterable`:
`` python
`一个参数,可以是0或1,指定为str或int
疯狂。清理值("some_arg",some_arg,[0,1,"0","1"])
```
或者,可以指定禁止值,而不是允许值。
这可以通过提供关键字arg com来实现plement`:
`` python
一个参数,可以有除0和1以外的任何值
疯狂。清理值("some_arg",some_arg,[0,1],completion=true)
```
在一些罕见的情况下,我们需要使用不同于python的标准相等运算符`=`.
在任何这种情况下,都可以通过关键字arg`equality`fn`:
``python
def eq`u mod`5(x:int,y:int)->;bool:
"计算两个整数是否等于模5。"
返回(x-y)%5==0

需要被5整除的参数。清除值(
"一些参数"
一些参数,
0,
equality_fn=eq_mod_5,
error_msg="参数不能被5整除!"

```
最后,请注意,"sanitize_value"再次接受可选关键字arg`none掼allowed`以指示
已清理的arg可以是"none"(除了指定的可接受值之外)。




因此,必须确保参数在一定范围内。
为此,我们可以使用
[`insanity.sanitize\u range`](src/main/python/insanity/sanitity\u checks.py l245)、
,其中提供了用于指定
允许的值间隔:
`` python
必须在半闭区间[0,1]内的参数
疯狂。清理范围("some_arg",some_arg,minimum=0,maximum=1,min_inclusive=true,max_inclusive=false)
```
与"清理值"一样,"清理范围"接受关键字arg"completion"表示所描述的
范围是禁止的,而不是允许的。





hecks.py l67)
此函数接受以下可选关键字参数:
-`elements_type`:元素可能具有的类型,
-`target_length`:定义"iterable"必须具有的确切长度,
-`min_length`:"iterable"的最小长度,
-`max_length`:"iterable"的最大长度,
-`none-allowed`:指示净化参数是否可以是"none",并且
-`none-elements`:指示"iterable"的元素是否可以是"none"。

/>#一个需要是iterable的参数,它包含10到20个数字
疯狂。对iterable进行清理(
"some_arg",
some_arg,
elements_type=[int,float],
min_length=10,
max_length=20

````
以对`iterable`,"sanitize\u iterable"提供关键字arg
"element\u check"fn`,它期望一个函数(如果提供)应用于包含的每个元素。
任何此类自定义检查函数都应该像此包提供的函数一样,在
执行了健全性时引发相应的错误检查失败。
请注意,除了"已消毒"提供的检查之外,还可以使用自定义检查。
此外,模块"疯狂。可消毒检查函数"还提供了两个功能,这两个功能可以通过
"元素检查"fn提供,类似于同名检查上图:
[`sanitize_range_fn`](src/main/python/insanity/iterable_check_functions.py l46)和
[`sanitize_value_fn`](src/main/python/insanity/iterable_check_functions.py l121)。

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

推荐PyPI第三方库


热门话题
java如何将cassandra中的行数据转换为与列相关的嵌套json   java如何使用jcr XPath在jcr:content/@jcr:data中搜索?   java在使用openCV进行安卓开发时如何利用手机的广角镜头   java解析扩展了接口,结束了一个潜在的无限循环   位置服务的@Override方法中存在java Android应用程序错误   java本地线程的用途和需求是什么   具有左右子访问的java节点树遍历   java验证JsonWebToken签名   JUL日志处理程序中的java日志记录   嵌入式Java读取给定时间段的串行数据。   java有没有办法从多个URL获取多个图像?   java线程通过等待intent阻止自己发送intent   java Spring MVC解析多部分内容请求   java JPA/Hibernate静态元模型属性未填充NullPointerException   java格式错误的字符(需要引号,得到I)~正在处理   java为什么PrintWriter对象抛出FileNotFoundException?   java Neo4j未正确保存标签   java IE不加载图像