Лучшая практика для Python Assert

Есть ли проблемы с производительностью или поддержкой кода при использованииassert как часть стандартного кода вместо того, чтобы использовать его только для целей отладки?

Является

assert x >= 0, 'x is less than zero'

лучше или хуже чем

if x < 0:
    raise Exception, 'x is less than zero'

Кроме того, есть ли способ установить бизнес-правило, какif x < 0 raise error&nbsp;это всегда проверяется безtry/except/finally&nbsp;так что, если в любое время по всему кодуx&nbsp;меньше 0, возникает ошибка, как если бы вы установилиassert x < 0&nbsp;в начале функции, в любом месте функции, гдеx&nbsp;становится меньше 0, исключение возбуждается?