在pdb中打印map函数调用的结果

时间:2015-02-23 03:13:07

标签: python pdb

在python pdb中,我在代码中设置断点并运行我的文件。它像往常一样进入调试模式。我想打印地图调用的输出。因此我在pdb中输入以下内容:

(Pdb) p inp, pos
('abcde', [0, 1, 2])
(Pdb) map(lambda x: inp[x], pos)
*** NameError: global name 'inp' is not defined
(Pdb) 

我不明白这里的NameError异常......在pdb中进行地图调用的正确方法是什么?

更新

这是一个可以帮助您重现问题的输出:

$ cat reproduce.py
from itertools import combinations

def comb(seq, r):
    n = len(seq)
    m = range(n)
    vectors = list(combinations(m, r))
    result = []
    for v in vectors:
        result.append(
            map(lambda x: seq[x], v)
            )
    return result

if __name__ == '__main__':

    r = comb('abcde', 3)
    import pprint as pp ; pp.pprint(r)
$ python -m pdb reproduce.py
> /home/deostroll/Public/code/py/reproduce.py(1)<module>()
-> from itertools import combinations
(Pdb) b 10
Breakpoint 1 at /home/deostroll/Public/code/py/reproduce.py:10
(Pdb) c
> /home/deostroll/Public/code/py/reproduce.py(10)comb()
-> map(lambda x: seq[x], v)
(Pdb) p v, seq
((0, 1, 2), 'abcde')
(Pdb) map(lambda z: seq[z], v)
*** NameError: global name 'seq' is not defined
(Pdb) 

0 个答案:

没有答案