Re: Does '!=' equivelent to 'is not'

Discussion in 'Python' started by Leo Jay, Jun 17, 2008.

  1. Leo Jay

    Leo Jay Guest

    On Tue, Jun 17, 2008 at 11:29 AM, pirata <> wrote:
    > I'm a bit confusing about whether "is not" equivelent to "!="
    >
    > if a != b:
    > ...
    >
    > if a is not b:
    > ...
    >
    >
    > What's the difference between "is not" and "!=" or they are the same thing?


    The 'is' is used to test do they point to the exactly same object.
    The '==' is used to test are their values equal.

    same objects are equal, but equal don't have to be the same object.

    and be very careful to the dirty corner of python:
    >>> a = 100000
    >>> b = 100000
    >>> a is b

    False
    >>> a == b

    True
    >>> a = 5
    >>> b = 5
    >>> a is b

    True
    >>> a == b

    True
    >>>


    which is caused by small object cache mechanism.


    --
    Best Regards,
    Leo Jay
     
    Leo Jay, Jun 17, 2008
    #1
    1. Advertising

  2. Leo Jay

    Lie Guest

    On Jun 17, 11:07 am, "Leo Jay" <> wrote:
    > On Tue, Jun 17, 2008 at 11:29 AM, pirata <> wrote:
    > > I'm a bit confusing about whether "is not" equivelent to "!="

    >
    > > if a != b:
    > >  ...

    >
    > > if a is not b:
    > >  ...

    >
    > > What's the difference between "is not" and "!=" or they are the same thing?

    >
    > The 'is' is used to test do they point to the exactly same object.
    > The '==' is used to test are their values equal.
    >
    > same objects are equal, but equal don't have to be the same object.
    >
    > and be very careful to the dirty corner of python:


    No you don't have to be careful, you should never rely on it in the
    first place.

    Basically 'a is b' and 'not(a is b)' is similar to 'id(a) == id(b)'
    and 'not(id(a) == id(b))'

    You use 'is' when you want to test whether two variable/names are
    actually the same thing (whether they actually refers to the same spot
    on memory). The '==' equality comparison just test whether two
    objects' values can be considered equal.
     
    Lie, Jun 17, 2008
    #2
    1. Advertising

  3. En Tue, 17 Jun 2008 02:25:42 -0300, Lie <> escribió:
    > On Jun 17, 11:07 am, "Leo Jay" <> wrote:
    >> On Tue, Jun 17, 2008 at 11:29 AM, pirata <> wrote:


    >> > What's the difference between "is not" and "!=" or they are the same thing?

    >>
    >> The 'is' is used to test do they point to the exactly same object.
    >> The '==' is used to test are their values equal.
    >>
    >> and be very careful to the dirty corner of python:


    [example with "5 is 5" but "100000 is not 100000"]

    > No you don't have to be careful, you should never rely on it in the
    > first place.
    >
    > Basically 'a is b' and 'not(a is b)' is similar to 'id(a) == id(b)'
    > and 'not(id(a) == id(b))'


    No.

    > You use 'is' when you want to test whether two variable/names are
    > actually the same thing (whether they actually refers to the same spot
    > on memory). The '==' equality comparison just test whether two
    > objects' values can be considered equal.


    Yes, *that* is true. The above statement is not. A counterexample:

    py> [] is []
    False
    py> id([])==id([])
    True

    Even dissimilar objects may have the same id:

    py> class A: pass
    ....
    py> class B: pass
    ....
    py> A() is B()
    False
    py> A() == B()
    False
    py> id(A())==id(B())
    True

    Comparing id(a) with id(b) is only meaningful when a and b are both alive at the same time. If their lifetimes don't overlap, id(a) and id(b) are not related in any way. So I think that trying to explain object identity in terms of the id function is a mistake.

    --
    Gabriel Genellina
     
    Gabriel Genellina, Jun 17, 2008
    #3
  4. Leo Jay

    Derek Martin Guest

    On Tue, Jun 17, 2008 at 04:33:03AM -0300, Gabriel Genellina wrote:
    > > Basically 'a is b' and 'not(a is b)' is similar to 'id(a) == id(b)'
    > > and 'not(id(a) == id(b))'

    >
    > No.


    Sure it is... he said "similar"... not identical. They are not the
    same, but they are similar.

    Saying a flat "no" alone, without qualifying your statement is
    generally interpreted as rude in English... It's kind of like how you
    talk to children when they're too young to understand the explanation.
    Yucky.

    --
    Derek D. Martin
    http://www.pizzashack.org/
    GPG Key ID: 0x81CFE75D


    -----BEGIN PGP SIGNATURE-----
    Version: GnuPG v1.2.1 (GNU/Linux)

    iD8DBQFIV6mFdjdlQoHP510RAnuCAJ0bduRUXrOsAM1YeVkB6at7QGCMQACdFTD7
    qhGWDqFcvX3JokVte+EXu8s=
    =OQ51
    -----END PGP SIGNATURE-----
     
    Derek Martin, Jun 17, 2008
    #4
  5. En Tue, 17 Jun 2008 09:09:41 -0300, Derek Martin <>
    escribió:

    > On Tue, Jun 17, 2008 at 04:33:03AM -0300, Gabriel Genellina wrote:
    >> > Basically 'a is b' and 'not(a is b)' is similar to 'id(a) == id(b)'
    >> > and 'not(id(a) == id(b))'

    >>
    >> No.

    >
    > Sure it is... he said "similar"... not identical. They are not the
    > same, but they are similar.


    'equality' and 'identity' are similar too, so the whole answer would make
    no sense in that case. You can't explain identity based on things that
    aren't identical. A fine grained question for a fine grained difference
    requires a fine grained answer.

    > Saying a flat "no" alone, without qualifying your statement is
    > generally interpreted as rude in English... It's kind of like how you
    > talk to children when they're too young to understand the explanation.
    > Yucky.


    I didn't meant to be rude at all - and I apologize to Mr. Lie. The
    explanation for such strong "No" was in the paragraph below it (the idea
    was to say: "No to this, yes to that")

    --
    Gabriel Genellina
     
    Gabriel Genellina, Jun 18, 2008
    #5
  6. Leo Jay

    Asun Friere Guest

    On Jun 17, 5:33 pm, "Gabriel Genellina" <>
    wrote:
    > En Tue, 17 Jun 2008 02:25:42 -0300, Lie <> escribió:


    >
    > > Basically 'a is b' and 'not(a is b)' is similar to 'id(a) == id(b)'
    > > and 'not(id(a) == id(b))'

    >
    > No.

    ...
    > ... The above statement is not. A counterexample:
    >
    > py> [] is []
    > False
    > py> id([])==id([])
    > True
    >

    But that's not what he said, he used 'a' and 'b' which are names, not
    anonymous objects.
    Fairer would be,
    a = [];b = []
    id(a) == id(b)

    Morevover, Lie wrote "id(a)==id(b)". Since there is no need for the
    anonymous object to persist following id testing, you cannot guarantee
    that you are comparing an id of two objects (as referred to by 'a' and
    'b'). Haven't you, in effect, tested id(a) == id(a)? While this
    might be an interesting effect, I doubt that it clarifies the
    difference between equivalence and identity testing, in the way Lie's
    statement in fact does.

    Also in considering what equivalence means in python reference ought
    to be made to the __eq__ method. The original querant may care to
    look it up.
     
    Asun Friere, Jun 18, 2008
    #6
  7. Leo Jay

    Terry Reedy Guest


    >> Saying a flat "no" alone, without qualifying your statement is
    >> generally interpreted as rude in English... It's kind of like how you
    >> talk to children when they're too young to understand the explanation.
    >> Yucky.

    >
    > I didn't meant to be rude at all - and I apologize to Mr. Lie. The
    > explanation for such strong "No" was in the paragraph below it (the idea
    > was to say: "No to this, yes to that")


    As a very much native English speaker I disagree that 'No' is
    necessarily rude. I wish I could more often get such a clean answer to
    my questions from my child.
     
    Terry Reedy, Jun 18, 2008
    #7
  8. En Tue, 17 Jun 2008 23:04:16 -0300, Asun Friere <> escribió:

    > On Jun 17, 5:33 pm, "Gabriel Genellina" <>
    > wrote:
    >> En Tue, 17 Jun 2008 02:25:42 -0300, Lie <> escribió:

    >
    >>
    >> > Basically 'a is b' and 'not(a is b)' is similar to 'id(a) == id(b)'
    >> > and 'not(id(a) == id(b))'

    >>
    >> No.

    > ...
    >> ... The above statement is not. A counterexample:
    >>
    >> py> [] is []
    >> False
    >> py> id([])==id([])
    >> True
    >>

    > But that's not what he said, he used 'a' and 'b' which are names, not
    > anonymous objects.
    > Fairer would be,
    > a = [];b = []
    > id(a) == id(b)


    If you limit yourself to interpret 'a' and 'b' as actual names, yes, the statement is true. But I thought of them as placeholders or metasyntactic names - like in "abs(x) returns the absolute value of x", where x may represent *any* expression, not just a single name. Under this general interpretation the statement is not true anymore.

    (This thread is getting way above 10000cp...)

    --
    Gabriel Genellina
     
    Gabriel Genellina, Jun 18, 2008
    #8
  9. Leo Jay

    Paul McGuire Guest

    Re: Does '!=' equivelent to 'is not' [drifting OT...]

    On Jun 17, 7:09 am, Derek Martin <> wrote:
    > On Tue, Jun 17, 2008 at 04:33:03AM -0300, Gabriel Genellina wrote:
    > > > Basically 'a is b' and 'not(a is b)' is similar to 'id(a) == id(b)'
    > > > and 'not(id(a) == id(b))'

    >
    > > No.

    >

    <snip>
    >
    > Saying a flat "no" alone, without qualifying your statement is
    > generally interpreted as rude in English...  It's kind of like how you
    > talk to children when they're too young to understand the explanation.
    > Yucky.
    >

    Geez, man, this is Usenet. If you want rude or condescending, the
    answer would have been "No, you flatulent moron." Or maybe the
    alarmist, "No! No! No!"

    I see the unqualified "No." often on this list, as a short cut for
    "Your technical explanation is flawed or has overlooked a critical
    point or corner case," and is usually followed by more details further
    down in the post to explain what the misconception or oversight was.

    Back in my college days, I would not be surprised for a professor to
    respond "No." (or worse) if I offered an erroneous explanation to
    another student. The unqualified "No." may be curt, and on a more
    sensitive day, one might write "No. (see below)", but as one of the
    most informed and careful posters on this list, I'm inclined to give
    Gabriel a little slack.

    -- Paul
     
    Paul McGuire, Jun 18, 2008
    #9
  10. Leo Jay

    Ethan Furman Guest

    Re: Does '!=' equivelent to 'is not' [drifting a little more]

    Gabriel Genellina wrote:
    > (This thread is getting way above 10000cp...)


    What is 10000cp?
    --
    Ethan
     
    Ethan Furman, Jun 18, 2008
    #10
  11. Leo Jay

    Lie Guest

    On Jun 18, 7:26 am, "Gabriel Genellina" <>
    wrote:
    > En Tue, 17 Jun 2008 09:09:41 -0300, Derek Martin <>  
    > escribió:
    >
    > > On Tue, Jun 17, 2008 at 04:33:03AM -0300, Gabriel Genellina wrote:
    > >> > Basically 'a is b' and 'not(a is b)' is similar to 'id(a) == id(b)'
    > >> > and 'not(id(a) == id(b))'

    >
    > >> No.

    >
    > > Sure it is... he said "similar"... not identical.  They are not the
    > > same, but they are similar.

    >
    > 'equality' and 'identity' are similar too, so the whole answer would make  
    > no sense in that case. You can't explain identity based on things that  
    > aren't identical. A fine grained question for a fine grained difference  
    > requires a fine grained answer.


    In my defense, I admit I have the tendency to forget (purposefully)
    fine-grained differences if I thought that the difference was not
    significant enough in the context of speaking. The OP asked about !=
    and 'is not', so I explained in terms of those being equality and
    identity testing respectively. To give a more concise and easy to
    understand example, I said that 'is not' is like using testing the
    'id()' of the objects. Since (I think) the difference between != and
    'is not' is much larger compared to the difference between 'is not'
    and 'id() test', I thought I could consider 'is not' and 'id() test'
    as "equivalent" in the context of this thread: 'Does != is equivalent
    to "is not"'.

    Either way, I'm sorry that I failed to put explicit notice that 'is
    not' and 'id() testing' isn't exactly the same either.

    > > Saying a flat "no" alone, without qualifying your statement is
    > > generally interpreted as rude in English...  It's kind of like how you
    > > talk to children when they're too young to understand the explanation.
    > > Yucky.

    >
    > I didn't meant to be rude at all - and I apologize to Mr. Lie.


    I don't deserve the apology because the mistake is on me and I didn't
    feel offended, in fact I'm delighted someone could point out my
    mistake.

    > The  
    > explanation for such strong "No" was in the paragraph below it (the idea  
    > was to say: "No to this, yes to that")
     
    Lie, Jun 18, 2008
    #11
  12. Leo Jay

    Lie Guest

    On Jun 18, 12:32 pm, Terry Reedy <> wrote:
    > >> Saying a flat "no" alone, without qualifying your statement is
    > >> generally interpreted as rude in English...  It's kind of like how you
    > >> talk to children when they're too young to understand the explanation.
    > >> Yucky.

    >
    > > I didn't meant to be rude at all - and I apologize to Mr. Lie. The
    > > explanation for such strong "No" was in the paragraph below it (the idea
    > > was to say: "No to this, yes to that")

    >
    > As a very much native English speaker I disagree that 'No' is
    > necessarily rude.  I wish I could more often get such a clean answer to
    > my questions from my child.


    I'm not a native English speaker, although I think my parents would
    have liked me to be more straightforward when talking, cause I tend to
    say things like "possibly", "maybe", "probably", and other ambiguous
    expressions to the extent that it has frustrated them now and then.
     
    Lie, Jun 18, 2008
    #12
  13. Leo Jay

    Paul McGuire Guest

    On Jun 18, 2:22 pm, Lie <> wrote:
    >
    > I'm not a native English speaker, although I think my parents would
    > have liked me to be more straightforward when talking, cause I tend to
    > say things like "possibly", "maybe", "probably", and other ambiguous
    > expressions to the extent that it has frustrated them now and then.


    Well, at least you *talk* to your parents! Mostly what I get from my
    kids is, "can I borrow 10 dollars?"

    -- Paul
     
    Paul McGuire, Jun 18, 2008
    #13
  14. Leo Jay

    Lie Guest

    On Jun 19, 2:51 am, Paul McGuire <> wrote:
    > On Jun 18, 2:22 pm, Lie <> wrote:
    >
    >
    >
    > > I'm not a native English speaker, although I think my parents would
    > > have liked me to be more straightforward when talking, cause I tend to
    > > say things like "possibly", "maybe", "probably", and other ambiguous
    > > expressions to the extent that it has frustrated them now and then.

    >
    > Well, at least you *talk* to your parents!  Mostly what I get from my
    > kids is, "can I borrow 10 dollars?"


    lol, I rarely initiate the talk to my parents unless I have to, they
    usually starts talking first which I usually responded with the
    ambiguous statements. Well, in fact, I rarely initiate a talk with
    anybody, it's my nature to keep myself in the shade until I have to be
    in the light.

    But I never asked for money up straight like that though.
     
    Lie, Jun 18, 2008
    #14
  15. Re: Does '!=' equivelent to 'is not' [drifting a little more]

    En Wed, 18 Jun 2008 14:26:31 -0300, Ethan Furman <>
    escribió:

    > Gabriel Genellina wrote:
    >> (This thread is getting way above 10000cp...)

    >
    > What is 10000cp?


    cp = centipoise, a unit of dynamic viscosity, measuring the resistence to
    flow.
    Honey viscosity is a few hundreds, corn syrup a few thousands, and
    something above 10000 cp is really viscous...

    --
    Gabriel Genellina
     
    Gabriel Genellina, Jun 18, 2008
    #15
  16. Leo Jay

    MRAB Guest

    On Jun 18, 9:43 pm, Lie <> wrote:
    > On Jun 19, 2:51 am, Paul McGuire <> wrote:
    >
    > > On Jun 18, 2:22 pm, Lie <> wrote:

    >
    > > > I'm not a native English speaker, although I think my parents would
    > > > have liked me to be more straightforward when talking, cause I tend to
    > > > say things like "possibly", "maybe", "probably", and other ambiguous
    > > > expressions to the extent that it has frustrated them now and then.

    >
    > > Well, at least you *talk* to your parents!  Mostly what I get from my
    > > kids is, "can I borrow 10 dollars?"

    >
    > lol, I rarely initiate the talk to my parents unless I have to, they
    > usually starts talking first which I usually responded with the
    > ambiguous statements. Well, in fact, I rarely initiate a talk with
    > anybody, it's my nature to keep myself in the shade until I have to be
    > in the light.
    >

    "'Tis better to remain silent and be thought a fool, than open one's
    mouth and remove all doubt." - Samuel Johnson. :)

    > But I never asked for money up straight like that though.
     
    MRAB, Jun 19, 2008
    #16
  17. Leo Jay

    Derek Martin Guest

    Yaieee!

    On Wed, Jun 18, 2008 at 01:32:28AM -0400, Terry Reedy wrote:
    > > >Saying a flat "no" alone, without qualifying your statement is
    > > >generally interpreted as rude in English...


    > As a very much native English speaker I disagree that 'No' is
    > necessarily rude.


    I never said it was necessarily anything. Generalities generally have
    lots of exceptions. :D It definitely isn't *necessarily* rude, and I
    didn't interpret Gabriel's message as rude. I was merely pointing out
    that such statements are often interpreted as rude, whether or not
    they were intended that way. FWIW, my post wasn't intended to be a
    post at all, but instead a private message to Gabriel. I guess I
    zigged when I should have zagged... ;-)

    That said, what he did do, was to contradict a statement which was
    literally true, in an abrupt manner. Lots of people would interpret
    this as rude demeanor. His commentary was spot on, but the way he
    went about making it has a tendency to make some (perhaps many)
    responees defensive, if not belligerent. But, if I actually thought
    Gabriel was intentionally being rude, I wouldn't have bothered to say
    anything, and just deleted all his posts. :) I don't even think an
    apology was warranted...

    On Wed, Jun 18, 2008 at 07:01:23AM -0700, Paul McGuire wrote:
    > Geez, man, this is Usenet. If you want rude or condescending, the
    > answer would have been "No, you flatulent moron." Or maybe the
    > alarmist, "No! No! No!"


    Sure, those statements would generally be considered *blatantly* rude
    (but still sometimes may not be, in context). This does not mean that
    less blatant statements are not also rude. Geez indeed...

    > I see the unqualified "No." often on this list,


    I see it lots of places, and maybe as much as 1/3 of the time, I see
    it start flame wars. It seemed clear to me that Gabriel had no
    intention of being offensive... All I'm saying is that if you want to
    avoid offending some people unintentionally and needlessly, it's a
    good idea to avoid making curt statements, especially curt negative
    statements.

    If the intention is to signal that more is to come, a simple
    improvement is to add an elipsis, whose purpose is exactly that:
    "No..." But even more effective at avoiding the appearance of being
    rude are statements like "Not exactly..." "I don't think so..." etc.
    They're not even all that much extra typing.

    There are lots of times when a simple "no" is exactly what's called
    for. "Do you like dark Chocolate?" "No." "Are you watching the
    Celtics game?" "No." Or even, "Is the baby's new shirt blue?" "No,
    it's green."

    Being concise is not the same as being curt. Tone also plays a big
    role, but conveying the appropriate tone of a simple "no" is pretty
    much impossible in an e-mail. In written communication, it should be
    avoided like the plague.

    > Back in my college days, I would not be surprised for a professor to
    > respond "No."


    Sure, lots of professors are arrogant, insensitive jerks. Does that
    make it OK? But, depending on the context and the professor's tone,
    even the situation you describe isn't necessarily rude. It often
    isn't.

    The world is full of Jerks with a capital 'J'. Imagine if it weren't?
    How nice that would be... But, all I was offering here was a
    suggestion regarding how to not appear like a Jerk when one isn't
    intending to.

    > but as one of the most informed and careful posters on this list,
    > I'm inclined to give Gabriel a little slack.


    Sure. But not everyone here knows Gabriel. Not everyone here has
    seen his informed contributions. Not everyone here has been here more
    than a day... More than a few people have posted on this list
    complaining about the sort of responses people provide on this list,
    and many such complaints are quite reasonable (though sometimes the
    person doing the complaining is himself rather unreasonable, if not
    completely bonkers, I admit).

    I am somewhat incredulous that this required explanation... In the
    end what I thought would be a nice little, "hey, avoid this pot hole"
    kind of note seems to mostly have generated a lot of silly noise. I
    now retire from this discussion, and crawl back into my happy
    lurk-spot. :)

    Cheers

    --
    Derek D. Martin
    http://www.pizzashack.org/
    GPG Key ID: 0x81CFE75D


    -----BEGIN PGP SIGNATURE-----
    Version: GnuPG v1.2.1 (GNU/Linux)

    iD8DBQFIWf3udjdlQoHP510RAk5CAJwPLcI4typySID7hgkgrK7tBTowqQCgvQa/
    UY+H3HZzcSDNz0to5xaAeqo=
    =LuuV
    -----END PGP SIGNATURE-----
     
    Derek Martin, Jun 19, 2008
    #17
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Replies:
    8
    Views:
    4,772
    Steven Cheng[MSFT]
    Oct 20, 2005
  2. Phi!
    Replies:
    1
    Views:
    206
  3. Jules
    Replies:
    40
    Views:
    418
    Jules
    Dec 28, 2005
  4. John Wilkinson

    Perl Equivelent of C++ program

    John Wilkinson, Mar 22, 2007, in forum: Perl Misc
    Replies:
    6
    Views:
    129
    -berlin.de
    Mar 23, 2007
  5. Graham Drabble

    Perl equivelent of "links -dump"

    Graham Drabble, Oct 18, 2009, in forum: Perl Misc
    Replies:
    2
    Views:
    107
    Graham Drabble
    Oct 18, 2009
Loading...

Share This Page