在ipdb中,如何查询与命令同名的变量?



我正在尝试调试一个函数quicksort(A, l, r)该函数具有一个名为l的局部变量。但是,在 ipdb 中,这也对应于查看当前行周围代码的命令。所以我看到的是这样的东西:

ipdb> dir()
['A', 'ipdb', 'l', 'r']
ipdb> A
[2, 4, 6, 1, 3, 5, 7, 8]
ipdb> l
14         A[0], A[p] = A[p], A[0]
15 
16 def quicksort(A, l, r):
17         # n = len(A)
18         import ipdb; ipdb.set_trace()
---> 19         if len(A) == 1:
20                 return
21         else:
22                 # choose_pivot(A)
23                 q = partition(A, l, r)
24                 quicksort(A, l, q-1)

在这种情况下,我真正想做的是看到l的价值,但是。有没有办法"转义"默认l命令并查看l变量的值?

如本答案所示,您应该在语句前面加上感叹号!

例如:

ipdb> l                                                                                                                                                                                                                                                                   
267 
268         for i, l in enumerate(self.Q.net.layers):
269 
270             import ipdb; ipdb.set_trace()
271 
--> 272             w, b = l.get_weights()
273 
274             res[f"W_{i}"] = wandb.Histogram(w.flatten(), num_bins=250)
275             res[f"B_{i}"] = wandb.Histogram(b.flatten(), num_bins=250)
276 
277         wandb.log(res)
ipdb> !l                                                                                                                                                                                                                                                                  
<tensorflow.python.keras.layers.core.Dense object at 0x7fc28308e690>
ipdb>

我发现我可以简单地p(l)来查看__repr__表示(或print(l)来查看__str__表示(。

相关内容

  • 没有找到相关文章

最新更新