【发布时间】:2018-08-19 15:31:36
【问题描述】:
我想在脚本运行时自动打印 python 语句,因为它们在脚本中被调用。谁能展示一个现成的解决方案?
例如,我可能有以下python代码。
print "xxx"
myfun()
我希望将print "xxx" 和myfun() 准确地打印在输出中。
一种解决方案是手动为每个函数添加一个打印语句。但这很繁琐。
print 'print "xxx"'
print "xxx"
print 'myfun()'
myfun()
以下解决方案不能这样做。请不要将此问题标记为重复。
这里的解决方案不仅会打印当前脚本中的函数,还会打印当前脚本中使用的其他脚本中的函数。这些解决方案不是我需要的。
How do I print functions as they are called
以下不做我需要的,因为它不限制对当前文件的装饰。例如,它使用import mymod1; decorate_all_in_module(mymod1, decorator)。我没有模块。我想打印当前脚本中的语句。
【问题讨论】:
-
我在你上次(重新)发布这个问题时问过这个问题,但是 "[...] 它不限制对当前文件的装饰" 是什么意思?还装饰导入的函数是不是有问题?
-
@Aran-Fey 查看我的编辑。
-
“我没有模块。” 是的,你有——它叫做
__main__。试试import __main__; decorate_all_in_module(__main__, decorator)。 -
您需要在作为副本关闭时编辑您的帖子。删除和重新发布只会导致更多的投票和关闭,这反过来又会导致发布禁令。我确实试图告诉你上次你这样做的时候。正如所指出的,您确实有一个名为
__main__的模块。您也可以使用globals()(for name in globals():和globals()[name]获取和globals()[name] = decorator(obj)分配) -
@MartijnPieters 所以这只是证明了这个问题不是重复的。
标签: python