Python - Почему использование assert (required_param)? - PullRequest
1 голос
/ 25 июня 2010

Я нашел это сегодня, когда искал в библиотеке 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(), конечно, дает вам одно унифицированное исключение, которое может появиться, но если вы не хотите, чтобы эта функция молча давала сбой, чтобы что-то сделать в этом случае, вы бы предпочли, чтобы она громко сломалась,вы можете поймать такие ошибки на ранней стадии?Я никогда не понимал, почему люди используют утверждения в производственном коде.Возможно, я сделаю это после того, как получу ответы на этот вопрос.

1 Ответ

2 голосов
/ 25 июня 2010

Единственная причина, которую я могу себе представить для описанной вами ситуации, - это также отклонить False, 0, [], (,) и т. Д. Но это не имеет смысла утверждать по умолчаниюзначение.

Если автор не намеревался отклонять другие значения ложных значений, то это assert даже больше сомнительно.

...