print open(__file__).read(),
Это будет работать на системах UNIX, я думаю, но я не уверен насчет Windows.Завершающая запятая гарантирует, что исходный код печатается точно, без дополнительной завершающей строки.
Только что понял (основываясь на комментариях ниже), что это не работает, если ваш исходный код взят из sys.stdin
, что именно то, что вы просили.В этом случае вы можете воспользоваться некоторыми идеями, изложенными на этой странице о квинах (программах, печатающих собственные исходные коды) в Python, но ни одно из решений не будет единственной функцией, которая просто работает.Обсуждение, не зависящее от языка, здесь .
Короче говоря, нет, я не думаю, что это возможно с одной функцией, если ваш исходный код поступает из стандартного ввода. может иметь возможность получить доступ к интерпретированной форме вашей программы как к объекту кода Python и перевести ее обратно в исходную форму, но переведенная форма почти наверняка не будет точно соответствовать исходному содержимому файла.(Например, комментарии и строка Шебанга, безусловно, будут удалены).