Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python-为什么使用assert(必需参数)?_Python_Assert_Assertions - Fatal编程技术网

Python-为什么使用assert(必需参数)?

Python-为什么使用assert(必需参数)?,python,assert,assertions,Python,Assert,Assertions,我今天在查看API库时发现了这一点 def my_function(self, required_param=None): assert(required_param) ... Do cool function stuff 这样做不是更容易吗: def my_function(self, required_param): ... Do cool function stuff 或者,我错过了什么 当然,assert()会给您一个可能出现的统一异常,但是除非您希望此函数在

我今天在查看API库时发现了这一点

def my_function(self, required_param=None):
    assert(required_param)
    ... Do cool function stuff
这样做不是更容易吗:

def my_function(self, required_param):
    ... Do cool function stuff
或者,我错过了什么


当然,
assert()
会给您一个可能出现的统一异常,但是除非您希望此函数在这种情况下以静默方式失败,否则您不希望它被大声打断,以便尽早发现此类错误吗?我一直不明白人们为什么在生产代码中使用断言。也许,在我得到一些答案之后,我会这样做。

我所能想象的你所描述的情况的唯一原因是也拒绝
False
0
[]
(,)
,等等。但是,对默认值进行断言是没有意义的


如果作者不打算拒绝其他虚假的ish值,那么
assert
就更加可疑了。

但是在这种情况下,为什么不
If not required\u param:…
我也认为这是粗略的。也许作者忘了把它拿出来?或者用信息更丰富的异常替换它?将assert用作函数也很粗略-请参阅