Python:在if语句的中间添加pdb

时间:2019-03-03 06:30:42

标签: python

有没有一种方法可以在python中的pthread_attr_setschedpolicy (&attr, SCHED_FIFO); // set policy first in first out pthread_create(&tid1,&attr,runner,NULL); // create thread with first in first out pthread_attr_setschedpolicy (&attr, SCHED_RR); // set policy round robin pthread_create(&tid2,&attr,runner,NULL); // create thread with round robin 语句之前添加调试器?例如,我正在尝试做:

else

a = 5 if a > 3: print("yes") import pdb; pdb.set_trace() else: print("no") 语句之前使用pdb.set_trace()会导致SyntaxError。有办法解决吗?

编辑:此示例是对大得多情况的简化。我想在有许多else语句的地方使用它,因此不希望将其放在每个elififelif中。这是另一个示例:

else

我想在评估if not root: root = node pdb.set_trace() elif node.val < root.val: ... else: ... 之前启动调试器,因为如果缺少node.val,我可能会遇到AttributeError。

2 个答案:

答案 0 :(得分:1)

您可以像这样覆盖两个分支:

a = 5
if a > 3:
    print("yes")
    import pdb; pdb.set_trace()
else:
    import pdb; pdb.set_trace()
    print("no")

或只是放在前面,然后一步通过它。

a = 5
import pdb; pdb.set_trace()
if a > 3:
    print("yes")
else:
    print("no")

答案 1 :(得分:0)

如果代码实际上看起来像这样:

a = 5
if a > 3:
    print("yes")
elif a > 2:
    print("maybe")
elif a > 1:
    print("not really")
else:
    print("no")

一种选择是添加一个附加的if级别,该级别仅需要进行少量的重写和缩进调整

a = 5
if a > 3:
    print("yes")
else:
    import pdb; pdb.set_trace()

    if a > 2:
        print("maybe")
    elif a > 1:
        print("not really")
    else:
        print("no")