【问题标题】:Print statement as they are called in a python script automatically when the script runs [duplicate]脚本运行时自动在python脚本中调用它们的打印语句[重复]
【发布时间】: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)。我没有模块。我想打印当前脚本中的语句。

How can I decorate all functions imported from a file?

【问题讨论】:

  • 我在你上次(重新)发布这个问题时问过这个问题,但是 "[...] 它不限制对当前文件的装饰" 是什么意思?还装饰导入的函数是不是有问题?
  • @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


【解决方案1】:

对于这个问题没有“即用型”解决方案。您需要一种与 Python 语言具有不同语义的编程语言:因此,您要么需要编写代码来获得这种效果,要么使用不同的语言,或两者兼而有之。

也就是说,为了解决您的实际问题,我相信只需使用调试器就可以满足您的需求:这样您就可以跳过程序中的每个语句并观察它们的执行情况。

【讨论】:

  • 有一个解决方案,我们已经两次给出了各种选项。 OP 只是无法看到如何应用它们。
  • @MartijnPieters 从未给出完全回答我问题的解决方案。
  • @user1424739;这并不意味着问题没有解决方案。这个答案是完全错误的,不是你要求的,也没有帮助。
  • @MartijnPieters 没有任何问题是错误的。如果您认为有解决方案,请提供。 @DanielPryden 说没有解决方案。我也不认为有办法打印print "xxx"。将不重复的问题标记为重复是错误的。
猜你喜欢
  • 2015-11-13
  • 1970-01-01
  • 1970-01-01
  • 2017-06-13
  • 2014-03-23
  • 2021-04-17
  • 1970-01-01
  • 2022-06-15
  • 2013-03-22
相关资源
最近更新 更多