Python 如何确定哪些参数映射到哪些变量?

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)) :

如果我能检查哪些变量被分配给哪些参数,我的生活就会容易得多

行中:

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)) : 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]