使用赋值时Python中条件断点的行为

时间:2015-07-23 13:26:44

标签: python

最近我调试了一些代码并无意中设置了一个条件断点,如下所示:

my_var = some_val

实际上我想要

my_var == some_val

显然不是我想要做的事情,但它让我对调试时的行为感到好奇(以及其他发生在幕后的事情)。该声明是否已执行并存储?即如果第一行被用作条件my_var每次遇到该行时都会some_val

我注意到了这一点,因为我总是点击那个断点,所以“条件”总是在评估True

出于好奇,只是想知道该层下面发生了什么。

1 个答案:

答案 0 :(得分:1)

评估但未存储。原因是因为您可以覆盖__eq__方法,x == y是一个函数调用。

简短的例子:

class A:
    def __eq__(self, other):
        print "Evaluated !"

a = A()
a == 1
# it prints "Evaluated !"