我目前正在编写一个群体智能模拟器,并希望为用户提供一种简单的方法来调试他们的算法。在其他输出中,我觉得在算法的每个步骤开始时给用户打印执行上下文是有益的。
以下代码实现了我的需要。
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指出了我的回答
答案 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。