问 有没有一种方法可以打印出python中的一段特定的代码

2012-08-01 23:17:20 +08:00
 Hualin
大家好,请教一个问题。
有没有一种方法可以在 python 程序正在运行的时候打印出该语句之前某一段 python 的代码?
比如:
##code##
from pylab import *
A = zeros(10, dtype = bool)
B = ones(10, dtype = bool)
R = A & B
print R
##code##

我想让程序在控制台输出类似 R = A & B,这样的提示。除了直接在程序中直接写 print 'A & B',有没有比较直接的方法?因为这种逻辑条件可能比较复杂,我想输出这些 statement 在控制台以供查看。
2754 次点击
所在节点    Python
6 条回复
Hualin
2012-08-01 23:19:14 +08:00
不知道可能不可能,感觉有点不靠谱。
dreampuf
2012-08-01 23:25:17 +08:00
将目标代码封装成为代码。
执行前输出 inspect.getsource(targetfunction)
Hualin
2012-08-01 23:50:10 +08:00
@dreampuf 刚实验了下,似乎和想象的不大一样,这个 code object 只能是写道文件里的 function method class 等,不能直接是某一段代码语句。不过可以把这个 string trim一下。
clowwindy
2012-08-03 15:49:42 +08:00
不知道是不是你想要的

https://gist.github.com/3245499

$ python test_file.py

# foobar
frame = inspect.currentframe()
with open(frame.f_code.co_filename, 'rb') as f:
print ''.join(f.readlines()[frame.f_lineno - LINES_TO_PRINT:])
clowwindy
2012-08-03 15:51:47 +08:00
重贴一次,没有编辑回复/预览功能有时真不方便 @Livid

http://gist.github.com/3245499
Livid
2012-08-03 15:53:26 +08:00
@clowwindy 嗯,回复预览确实应该有。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/44071

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX