É possível "hackear" a função de impressão do Python?

Nota: Esta pergunta é apenas para fins informativos. Estou interessado em ver o quão profundo nos elementos internos do Python é possível ir com isso.

Não faz muito tempo, começou uma discussão dentro de um certoPergunta, questão sobre se as strings passadas para imprimir instruções podem ser modificadas após / durante a chamada paraprint tem sido feito. Por exemplo, considere a função:

def print_something():
    print('This cat was scared.')

Agora quandoprint for executada, a saída para o terminal deve exibir:

This dog was scared.

Observe que a palavra "gato" foi substituída pela palavra "cachorro". De alguma forma, algo em algum lugar foi capaz de modificar esses buffers internos para alterar o que foi impresso. Suponha que isso seja feito sem a permissão explícita do autor do código original (portanto, hackers / seqüestros).

esteComente do sábio @abarnert, em particular, me fez pensar:

Existem algumas maneiras de fazer isso, mas todas são muito feias e nunca devem ser feitas. A maneira menos feia é provavelmente substituir ocode objeto dentro da função com um objeto diferenteco_consts Lista. O próximo é provavelmente acessar a API C para acessar o buffer interno do str. [...]

Então, parece que isso é realmente possível.

Aqui está minha maneira ingênua de abordar esse problema:

>>> import inspect
>>> exec(inspect.getsource(print_something).replace('cat', 'dog'))
>>> print_something()
This dog was scared.

Claro,exec é ruim, mas isso realmente não responde à pergunta, porque na verdade não modifica nadadurante quando / depois print é chamado.

Como isso seria feito como o @abarnert explicou?

questionAnswers(4)

yourAnswerToTheQuestion