#!/usr/bin/python body= ['#!/usr/bin/python', '#', 'for line in body:', ' if line == "#": print "body=",body', ' else: print line'] for line in body: if line == "#": print "body=",body else: print line
При запуске скрипта на экран выводится точно такой же код, как видно в листинге выше
Если кто-то может подсказать более изящное решение, буду признателен.



первый шаг по переносу постов с http://blog.ownport.net на http://devel.ownport.net, затрагивающие вопросы разработки и интернет-технологии
ОтветитьУдалитьесли идти по пути использования стандартных библиотек, то можно попробовать поколдовать над:
ОтветитьУдалитьimport inspect
print( inspect.getsource( inspect.currentframe()))
только это не готовое решение. фрейм ещё двигать надо вперёд - пока выводит только "import inspect"
Ух ти! То ти добре знаєш пітон! :)
ОтветитьУдалитьТут є кілька прикладів: http://www.nyx.net/~gthompso/self_pyth.txt
После твоей ссылки я думаю мне еще учиться и учиться :)
ОтветитьУдалитьКраткость сестра таланта:
Author: Frank Stajano (fstajano@orl.co.uk)
l='l=%s;print l%%`l`';print l%`l`
Author: Greg Stein (gstein@microsoft.com)
x='x=%s\012print x%%`x`'
print x%`x`
Author: Terry Reedy (tjreedy@udel.edu)
Note: works as a command line input string
import sys;f=sys.stdout;
x='import sys;f=sys.stdout;x=%s;f.write(x%%`x`)';f.write(x%`x`)
Author: Terry Reedy (tjreedy@udel.edu)
Note: works as an interactive string input. The double quotes could theoretically be removed.
"x='x=%s;x%%`x`';x%`x`"
Author: Omar Antolin (omar@galois.fciencias.unam.mx)
a = ['print "a =", a', 'for s in a: print s']
print "a =", a
for s in a: print s
Author: Magnus Lie Hetland
Note: bash command line that runs a Python command
python -c "x='python -c %sx=%s; print x%%(chr(34),repr(x),chr(34))%s'; print x%(chr(34),repr(x),chr(34))"