python pdb lambda函数全局名称错误

python pdb lambda函数全局名称错误,python,lambda,pdb,nameerror,Python,Lambda,Pdb,Nameerror,我正在使用pdb.set_trace()测试一个修复程序,以确保它按照我在实现它之前预期的方式工作,并不断收到一个奇怪的错误 (Pdb) test = [1,2,3,4,4,3,2,1] (Pdb) max(range(len(test)),key=lambda i: test[i]) *** NameError: global name 'test' is not defined 所以我移动到我的本地机器,以确保在请求帮助之前,我可以尽可能简单地复制。在ipython,我得到了完全相同的行为

我正在使用
pdb.set_trace()
测试一个修复程序,以确保它按照我在实现它之前预期的方式工作,并不断收到一个奇怪的错误

(Pdb) test = [1,2,3,4,4,3,2,1]
(Pdb) max(range(len(test)),key=lambda i: test[i])
*** NameError: global name 'test' is not defined
所以我移动到我的本地机器,以确保在请求帮助之前,我可以尽可能简单地复制。在ipython,我得到了完全相同的行为

In [1]: test = [1,2,3,4,4,3,2,1]

In [2]: max(range(len(test)),key=lambda i: test[i])
Out[2]: 3

In [3]: import pdb; pdb.set_trace()
--Call--
> /Users/tristanmatthews/anaconda/lib/python2.7/site-packages/IPython/core/displayhook.py(237)__call__()
-> def __call__(self, result=None):
(Pdb) test = [1,2,3,4,4,3,2,1]
(Pdb) max(range(len(test)),key=lambda i: test[i])
*** NameError: global name 'test' is not defined
但在正常的命令行中,它可以正常工作:

tristan:~$ python
Python 2.7.6 |Anaconda 1.8.0 (x86_64)| (default, Nov 11 2013, 10:49:09) 
[GCC 4.0.1 (Apple Inc. build 5493)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> test = [1,2,3,4,4,3,2,1]
>>> max(range(len(test)),key=lambda i: test[i])
3
>>> import pdb; pdb.set_trace()
--Return--
> <stdin>(1)<module>()->None
(Pdb) test = [1,2,3,4,4,3,2,1]
(Pdb) max(range(len(test)),key=lambda i: test[i])
3
本地计算机ipython和命令行都是相同的:

In [5]: sys.version
Out[5]: '2.7.6 |Anaconda 1.8.0 (x86_64)| (default, Nov 11 2013, 10:49:09) \n[GCC 4.0.1 (Apple Inc. build 5493)]'
>>> sys.version
'2.7.6 |Anaconda 1.8.0 (x86_64)| (default, Nov 11 2013, 10:49:09) \n[GCC 4.0.1 (Apple Inc. build 5493)]'

pdb
不是一个完整的python shell,它拦截了很多东西。但是在它前面添加一个
打印
,应该可以:

print max(range(len(test)),key=lambda i: test[i])

我可以用Python2.7确认这个问题。有一个建议是:
pdb
提示符处的
interactive
将您放入一个交互式会话,该会话由
globals()
locals()
填充,并且您的
lambda
应按预期工作。

否,在这种情况下不起作用,请参阅my
print max(range(len(test)),key=lambda i: test[i])