Python: Como passar argumentos para o __code__ de uma funçã

Os seguintes trabalhos:

def spam():
    print "spam"
exec(spam.__code__)

Spa

Mas e sespam aceita argumentos?

def spam(eggs):
    print "spam and", eggs
exec(spam.__code__)

TypeError: spam () leva exatamente 1 argumento (0 dado)

Dado, que eu não tenho acesso à função em si, mas apenas a um objeto de código, como posso passar argumentos para o objeto de código ao executá-lo? É possível com eval?

Edit: Como a maioria dos leitores não acredita na utilidade disso, consulte o seguinte caso de uso:

Eu quero salvar pequenas funções Python em um arquivo para que possam ser chamadas, por exemplo de outro computador. (Não é necessário dizer aqui que esse caso de uso restringe severamente as funções possíveis.) A escolha do objeto da função não pode funcionar porque isso salva o nome e o módulo em que a função está definida. Em vez disso, eu poderia escolher o__code__ da função. Quando o retiro novamente, é claro que a referência à função desapareceu, e é por isso que não posso chamar a função. Eu simplesmente não o tenho em tempo de execuçã

Outro caso de uso:

Trabalho em várias funções em um arquivo que calculam alguns dados e os armazenam no disco rígido. Os cálculos consomem muito tempo, portanto não quero executar as funções todas as vezes, mas apenas quando a implementação da função foi alterad

Eu tenho uma versão em execução para um módulo inteiro em vez de uma função. Ele funciona observando a hora da modificação do arquivo em que o módulo está implementado. Mas essa não é uma opção se eu tiver muitas funções que não quero separar em arquivos únicos.

questionAnswers(6)

yourAnswerToTheQuestion