相关疑难解决方法(0)

obj .__ closure__中究竟包含了什么?

Beazley第100页提到:

>>>python.__closure__
(<cell at 0x67f50: str object at 0x69230>,)
>>>python.__closure__[0].cell_contents
Run Code Online (Sandbox Code Playgroud)

我的理解是这__closure__是一个列表但是这些单元格和str对象是什么?这看起来像一个单元组?

python closures python-internals

34
推荐指数
2
解决办法
6748
查看次数

python pdb lambda函数全局名称错误

我正在测试一个修复程序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
Run Code Online (Sandbox Code Playgroud)

所以我搬到了我的本地机器,以确保在寻求帮助之前尽可能简单地复制.在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
Run Code Online (Sandbox Code Playgroud)

但在正常的命令行,它工作得很好:

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 …
Run Code Online (Sandbox Code Playgroud)

python lambda nameerror pdb

6
推荐指数
1
解决办法
1002
查看次数

标签 统计

python ×2

closures ×1

lambda ×1

nameerror ×1

pdb ×1

python-internals ×1