Qual é o uso de" afirmar " em Python?

tenho lido algum código fonte e em vários locais vi o uso de assert. O que significa exactamente? Qual é o seu uso?

Quando devo usar a depuração.Asserção?

Sou engenheiro de software profissional há cerca de um ano, tendo-me graduado com uma licenciatura em Informática. Eu sa ... adequada? Faria mais sentido fazer Debug.Assert(val != null); ou if ( val == null ) throw new exception();