这是一个随机问题,更多的是出于好奇而不是任何特定需要。
是否可以编写一些 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 的自省(introspection)能力,我很好奇它是否扩展到这个级别。
最佳答案
这是我得到的最接近的:
echo 'import __main__,inspect;print inspect.getsource(__main__)' | python
失败了...无论如何,原始代码在启动时被解释器吃掉(从标准输入读取)。最多您可能能够再次通过 __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
关于python - 是否可以访问在标准输入中传递给 python 的 python 脚本的源代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3147823/