这是一个随机问题,更多是出于好奇而不是任何特定需求.
是否有可能编写一些python代码来打印一些东西,包括源代码本身,而不将python代码存储在文件中?例如,在Bash提示符下执行以下操作:
$echo '
> print "The Code:"
> PrintScript() # What would this function look like?
> for i in range(5):
> print i,
> print "!"
> ' | python
得到这样的输出:
The Code:
print "The Code:"
PrintScript() # What would this function look like?
for i in range(5):
print i,
print "!"
0 1 2 3 4 5 !
我怀疑这可能无法完成,但鉴于python的内省功能,我很想知道它是否扩展到这个级别.
最佳答案 那是我最接近的:
echo 'import __main__,inspect;print inspect.getsource(__main__)' | python
哪个失败了…在任何情况下,解释器在启动时都会占用原始代码(从stdin读取).最多可以通过__main__模块获取已编译的代码.
更新:
dis模块应该为您提供模块中所有函数的反汇编,但即使是那个也没有看到任何代码:
$echo -e 'import __main__,dis;print dis.dis(__main__)' | python
None
即使我投入一个函数:
$echo -e "import __main__,dis;print dis.dis(__main__)\ndef x():\n pass" | python
None