检索/打印执行上下文

时间:2009-04-15 07:55:09

标签: python

编辑:这个问题已经在apphacker和ConcernedOfTunbridgeWells的帮助下解决了。我已更新代码以反映我将使用的解决方案。

我目前正在编写一个群体智能模拟器,并希望为用户提供一种简单的方法来调试他们的算法。在其他输出中,我觉得在算法的每个步骤开始时给用户打印执行上下文是有益的。

以下代码实现了我的需要。

import inspect

def print_current_execution_context():
    frame=inspect.currentframe().f_back #get caller frame
    print frame.f_locals #print locals of caller

class TheClass(object):
    def __init__(self,val):
        self.val=val
    def thefunction(self,a,b):
        c=a+b
        print_current_execution_context()


C=TheClass(2)
C.thefunction(1,2)

这给出了预期的输出:

{'a': 1, 'c': 3, 'b': 2, 'self': <__main__.TheClass object at 0xb7d2214c>}

感谢apphacker和ConcernedOfTunbridgeWells指出了我的回答

2 个答案:

答案 0 :(得分:1)

尝试:

class TheClass(object):
    def __init__(self,val):
        self.val=val
    def thefunction(self,a,b):
        c=a+b
        print locals()


C=TheClass(2)
C.thefunction(1,2)

答案 1 :(得分:1)

您可以使用__locals__来获取本地执行上下文。有关可能也相关的一些讨论,请参阅this stackoverflow posting