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

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 Spring启动启用HTTPS   actionscript 3 java中的这个[“var”+“name”]   java只匹配给定集合中一个字符的一个匹配项   java Hibernate:防止角色表中出现多个相同的条目   javajersey+Spring注入servlet请求   java HtmlEditor javafx失去焦点   java Apache Wicket AjaxRequestTarget ListView组件未刷新或更新   mysql java。无法将lang.String转换为java。sql。时间戳   java将巨大的整数文件(在一行中)拆分为具有内存限制的已排序块   安卓如何完全关闭proguard?   安装Eclipse和Android SDK后的java“无AVD可用”消息   java动态显示图像视图   java在Spring中还有哪些WebsocketClient实现?   java Glassfish需要很长时间才能重新启动   使用Java简单串行连接器将pc与arduino连接   java如何在camel文件组件配置中结合readLockCheckInterval和maxMessagesPerPoll?   单击Android时的java预览图像   java如何将字节数组转换为ByteArrayOutputStream