464,667 Members | 1,347 Online
Need help? Post your question and get tips & solutions from a community of 464,667 IT Pros & Developers. It's quick & easy.

# Does '!=' equivelent to 'is not'

 P: n/a 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? Jun 27 '08 #1
23 Replies

 P: n/a 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? No, they are not the same thing. == and != test to see if the *value* of two variables are the same. Like so: >>a = 'hello world'b = 'hello world'a == b True a and b both have the value of 'hello world', so they are equal is and is not, however, do not test for value equivalence, they test for object identity. In other words, they test to see if the object the two variables reference are the same object in memory, like so: >>a is b False a and b are assigned to two different objects that happen to have the same value, but nevertheless there are two separate 'hello world' objects in memory, and therefore you cannot say that a *is* b Now look at this: >>c = d = 'hello world'c == d True >>c is d True In this case, they are again the same value, but now the is test also shows that they are the same *object* as well, because both c and d refer to the same 'hello world' object in memory. There is only one this time. != and is not work the same: >>a != b False >>a is not b True >>c != d False >>c is not d False >>> Hope that helps! Jun 27 '08 #2

 P: n/a 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 `==` operator tests equality. The `is` operator tests identity. If you don't specifically intend to test for identity, use `==`. If you don't know what identity tests are for (with the exception of testing for None-ness), then you don't need it. -- Erik Max Francis && ma*@alcyone.com && http://www.alcyone.com/max/ San Jose, CA, USA && 37 18 N 121 57 W && AIM, Y!M erikmaxfrancis Do we ask what profit the little bird hopes for in singing? -- Johannes Kepler, 1571-1630 Jun 27 '08 #3

 P: n/a On Jun 16, 10:29*pm, pirata

 P: n/a John Salerno wrote: == and != test to see if the *value* of two variables are the same. Let me just clarify this. It might seem like a picky point, but I think it's pretty important when learning Python. I don't really mean the value of the variables themselves, I mean the values that the variables refer to. The variables themselves aren't actually the objects, nor do they have values, exactly. Instead, they *refer* to objects in memory, and it is these objects that we are testing the values and identities of. For example, using that previous code: a ---'hello world' b ---'hello world' c ---\ ---'hello world' d ---/ a and b were assigned to two separate objects (it doesn't matter that they happen to be the same value). As you can see above, a and b refer to different things. c and d, however, were assigned simultaneously to the same object, and therefore refer to a single object in memory. This is why "c is d" is True, but "a is b" is False. Jun 27 '08 #5

 P: n/a On Tue, Jun 17, 2008 at 11:29 AM, pirata

 P: n/a On Jun 17, 11:07*am, "Leo Jay"

 P: n/a En Tue, 17 Jun 2008 02:25:42 -0300, Lie On Tue, Jun 17, 2008 at 11:29 AM, pirata

 P: n/a "Leo Jay" >inf = 2e200*2e200ind = inf/infind==ind False >>ind is ind True -- Duncan Booth http://kupuguy.blogspot.com Jun 27 '08 #9

 P: n/a 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) iD8DBQFIV6mFdjdlQoHP510RAnuCAJ0bduRUXrOsAM1YeVkB6a t7QGCMQACdFTD7 qhGWDqFcvX3JokVte+EXu8s= =OQ51 -----END PGP SIGNATURE----- Jun 27 '08 #10

 P: n/a pirata wrote: I'm a bit confusing about whether "is not" equivelent to "!=" >>0 is not 0.0 True >>0 != 0.0 False Jun 27 '08 #11

 P: n/a 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 Jun 27 '08 #12

 P: n/a On Jun 17, 5:33 pm, "Gabriel Genellina" wrote: En Tue, 17 Jun 2008 02:25:42 -0300, Lie 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 pyid([])==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. Jun 27 '08 #13

 P: n/a >Saying a flat "no" alone, without qualifying your statement isgenerally interpreted as rude in English... It's kind of like how youtalk 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. Jun 27 '08 #14

 P: n/a En Tue, 17 Jun 2008 23:04:16 -0300, Asun Friere wrote: >En Tue, 17 Jun 2008 02:25:42 -0300, Lie > 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 []Falsepyid([])==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 Jun 27 '08 #15

 P: n/a On Jun 17, 7:09*am, Derek Martin > 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 Jun 27 '08 #16

 P: n/a Gabriel Genellina wrote: (This thread is getting way above 10000cp...) What is 10000cp? -- Ethan Jun 27 '08 #17

 P: n/a On Jun 18, 7:26*am, "Gabriel Genellina" wrote: En Tue, 17 Jun 2008 09:09:41 -0300, Derek Martin

 P: n/a On Jun 18, 12:32*pm, Terry Reedy

 P: n/a On Jun 18, 2:22*pm, Lie 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 Jun 27 '08 #20

 P: n/a On Jun 19, 2:51*am, Paul McGuire

 P: n/a 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 Jun 27 '08 #22

 P: n/a On Jun 18, 9:43*pm, Lie

 P: n/a 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) iD8DBQFIWf3udjdlQoHP510RAk5CAJwPLcI4typySID7hgkgrK 7tBTowqQCgvQa/ UY+H3HZzcSDNz0to5xaAeqo= =LuuV -----END PGP SIGNATURE----- Jun 27 '08 #24

### This discussion thread is closed

Replies have been disabled for this discussion.