Minha resposta diz respeito ao WordPress, que está escrito em PHP, mas essa é uma mecânica geral de desenvolvimento, portanto não deve importar, apesar do fato de você ter colocado 'python' no título da sua pergunta.
Um bom exemplo de uso de ganchos, coincidentemente no desenvolvimento da Web, são os ganchos do WordPress .
Eles são nomeados de maneira apropriada, pois permitem uma maneira de "se conectar" a certos pontos da execução de um programa.
Por exemplo, o wp_head é uma 'ação' emitida quando um tema do WordPress está sendo renderizado e é na parte em que ele renderiza a parte que está dentro das <head>
tags. Digamos que você queira escrever um plug-in que exija uma folha de estilo, script ou algo que normalmente entraria nessas tags. Você pode 'conectar-se' a essa ação definindo uma função a ser chamada quando essa ação for emitida. Algo como:
add_action('wp_head', 'your_function');
your_function()
pode ser algo tão simples como:
function your_function() {
echo '<link rel="stylesheet" type="text/css" href="lol.css" />';
}
Agora, quando o WordPress emitir essa ação, fazendo algo como do_action('wp_head');
, ele verá que your_function()
foi 'enganchado' nessa ação, portanto chamará essa função ( e passará a ela quaisquer argumentos, se necessário), conforme definido na documentação de qualquer gancho específico )
Longa história: permite adicionar funcionalidades adicionais em pontos específicos da execução de um programa, conectando-os a esses pontos, na maioria dos casos, atribuindo um retorno de chamada de função.