您在这里有一些边际相关的问题。
我将从最简单的开始:(3)。使用,
logging您可以将所有调用聚集到一个日志文件或其他输出目标中:它们将按照在处理过程中发生的顺序进行。
接下来:(2)。
locals()提供当前范围的指示。因此,在没有其他参数的方法中,您将具有
self范围,该范围包含对当前实例的引用。困扰您的技巧是使用字典作为
%*** 作员的RHS的字符串格式。
"%(foo)s"% bar将被替换为
bar["foo"]is的任何值。
最后,您可以使用一些自省技巧,类似于
pdb可以记录更多信息的自省技巧:
def autolog(message): "Automatically log the current function details." import inspect, logging # Get the previous frame in the stack, otherwise it would # be this function!!! func = inspect.currentframe().f_back.f_pre # Dump the message + the name of this function to the log. logging.debug("%s: %s in %s:%i" % ( message, func.co_name, func.co_filename, func.co_firstlineno ))
这将记录传入的消息,以及(原始)函数名称,出现定义的文件名以及该文件中的行。看一下检查-
检查活动对象以了解更多详细信息。
正如我在前面的评论中所提到的,您还可以
pdb随时通过插入行
import pdb;pdb.set_trace()并重新运行程序来进入交互式调试提示符。这使您可以逐步检查代码,并根据需要检查数据。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)