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