在 ipdb 会话中如何使用 list()?

How to use list() when in an ipdb session?

在 Python 3.5.2 脚本中,例如,

import ipdb
ipdb.set_trace()

口译员点击这些行并让我进入 ipdb 会话。可以理解,与 iPython 解释器会话相比,ipdb 的功能有限(例如,没有魔法命令)。但是,我惊讶地发现某些 Python 内置函数不起作用,即 list().

ipdb> some_data                                                                                                                                               
<zip object at 0x7f416e820388>
ipdb> list(some_data)                                                                                                                                         
*** Error in argument: '(some_data)'
ipdb> list([])                                                                                                                                                
*** Error in argument: '([])'

我猜内置函数 list() 和其中一个 ipdb 命令之间存在名称冲突。有什么解决办法吗?

在 pdb 中,您似乎可以使用类似 C 的转换。在iPython.

中大概是类似的

你能试试吗:

ipdb> res = (list) (some_data) 
ipdb> somedata = {'a':1, 'b': 2}
ipdb> !list(somedata.keys())
['a', 'b']

! 覆盖所有 pdb 命令。

来源:https://github.com/gotcha/ipdb/issues/106