Melhor prática para Python afirmar

Há um problema de desempenho ou manutenção de código ao usarassert como parte do código padrão em vez de usá-lo apenas para fins de depuração?

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

melhor ou pior que

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

lém disso, existe alguma maneira de definir uma regra de negócios comoif x < 0 raise error sempre verificado sem otry/except/finally se, a qualquer momento, em todo o códigox é menor que 0, um erro é gerado, como se você definirassert x < 0 no início de uma função, em qualquer lugar da função em quex se torna menor que 0, uma exceção é gerada?

questionAnswers(26)

yourAnswerToTheQuestion