gpt4 book ai didi

python - 是否可以访问在标准输入中传递给 python 的 python 脚本的源代码?

转载 作者:太空宇宙 更新时间:2023-11-03 13:24:17 25 4
gpt4 key购买 nike

这是一个随机问题,更多的是出于好奇而不是任何特定需要。

是否可以编写一些 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com