Python 如何确定哪些参数映射到哪些变量?
如果我能检查哪些变量被分配给哪些参数,我的生活就会容易得多 行中: addState方法在manager类中定义为使用2个参数。它在playGame方法中被调用。我很难理解签名中的哪些参数映射到调用中的哪些参数Python 如何确定哪些参数映射到哪些变量?,python,debugging,interpreter,Python,Debugging,Interpreter,如果我能检查哪些变量被分配给哪些参数,我的生活就会容易得多 行中: addState方法在manager类中定义为使用2个参数。它在playGame方法中被调用。我很难理解签名中的哪些参数映射到调用中的哪些参数 def addState (self, parentState, newState) : "add state if it's new. Remember its parent" if self.seen.has_key(str(newState)) :
def addState (self, parentState, newState) :
"add state if it's new. Remember its parent"
if self.seen.has_key(str(newState)) : return
self.seen[str(newState)] = str(parentState)
self.queue.append (newState)
在下面的代码中,如果我假设newState对应于[0,0],因为它不是一个单数值,我不确定映射到什么,那么这段代码就不应该运行
self.manager.addState("", [0,0]) # start with 2 empty buckets
问题:
我对这一点的理解正确吗
最简单的方法是什么来检查它的运行状态,以便验证哪些参数映射到哪些参数
问题链接:
但如果我假设[0,0]对应于parentState和newState,那么如何在中作为参数传递呢
这个假设是你的问题
[0,0]是newState的值,也是parentState的值
在链接的示例中,世界状态由一维数组表示。世界的开始状态是由[0,0]表示的两个桶,如果存在由表示的空状态,则仅在游戏开始时适用
检查事物状态的一种非常简单的方法是使用pdb
现在,当您从python解释器运行此代码时,pdb将在这些行上中断,您可以检查发生了什么
(Pdb) parentState
""
(Pdb) newState
[0,0]
不要忘记列表也只是对象,所以它不是一个单数值,这可能是一个误解。[0,0]肯定是单个对象,更具体地说是包含两个项目的列表。
def addState (self, parentState, newState) :
"add state if it's new. Remember its parent"
# Let's augment this by adding a breakpoint
import pdb; pdb.set_trace()
if self.seen.has_key(str(newState)) : return
self.seen[str(newState)] = str(parentState)
self.queue.append (newState)
#print '--- Adding ', newState
(Pdb) parentState
""
(Pdb) newState
[0,0]