В Python я хотел бы написать функцию, которая будет красиво выводить свои результаты на консоль, если вызывается сама по себе (в основном для интерактивного использования или для отладки). Для целей этого вопроса, допустим, он проверяет статус чего-либо. Если я позвоню просто
check_status()
Хотелось бы увидеть что-то вроде:
Pretty printer status check 0.02v
NOTE: This is so totally not written for giant robots
=================================
System operational: ... ok
Time to ion canon charge is 9m 21s
Booster rocket in AFTERBURNER state
Range check is optimal
Rocket fuel is 10h 19m 40s to depletion
Beer served is type WICKSE LAGER, chill optimal
Suggested catchphrase is 01_FIGHTING_SPIRIT_GOGOGO
Virtual ... on
Однако я также хотел бы, чтобы вывод передавался в виде списка, если я вызываю его в контексте присвоения переменной:
not_robot_stat = check_status()
print not_robot_stat
>>> {'cond_op': 1, 't_canoncharge': 1342, 'stage_booster': 5, 'range_est_sigma': 0.023, 'fuel_est': 32557154, 'beer_type': 31007, 'beer_temp': 2, 'catchphrase_suggestion': 1023, 'virtual_on': 'hell yes'}
Итак ... есть ли способ динамически узнать в функции, назначается ли ее вывод? Я хотел бы иметь возможность сделать это, не прибегая к передаче параметров или написанию другой функции, предназначенной для этого. Я немного погуглил, и из того немногого, что я могу сказать, похоже, что мне придется прибегнуть к игре с байт-кодом. Это действительно необходимо?