Все зависит от того, генерируете ли вы функцию во время выполнения или нет:
Если вы это сделаете - inspect.getsource(object)
не будет работать для динамически сгенерированных функций, так как он получает источник объекта из файла .py
, поэтому в качестве источника можно получить только функции, определенные до выполнения.
И если ваши функции в любом случае размещены в файлах, почему бы не дать получателю доступ к ним и передавать только имена модулей и функций.
Единственное решение для динамически создаваемых функций, о котором я могу подумать, - это создать функцию как строку перед передачей, источником передачи и затем eval()
на стороне получателя.
Редактировать: решение marshal
выглядит также довольно умно, не знал, что вы можете сериализовать что-то другое, кроме встроенных