By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
455,441 Members | 1,656 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 455,441 IT Pros & Developers. It's quick & easy.

Why '==' ??

P: n/a
I may be about to get flamed as some heretic against the ancient
way..... but if assignment in conditional statements isn't
possible.... why do we need to use '==' instead of just '=' for if and
while statements ?

It's possible there are places where the interpreter could fail to
understand it, but I haven't found them yet. If there *aren't* any
situations where one could be confused for the other... then it's not
needed and is annoying :-)

The same could equally well be true for the trailing ':' after def, if
etc statements..............
Anyway - not withstanding a visit from the spanish inquisitionI'd be
interested to hear.....(And are the spanish inquisition likely to use
reasoning similar to the sort employed by those who advocate type
declarations and static languages)...

Regards,

Fuzzy
(recent python addict)

http://www.voidspace.org.uk/atlantib...thonutils.html
Jul 18 '05 #1
Share this Question
Share on Google+
11 Replies


P: n/a
I would assume it's because most people come to Python having programmed
other languages. In most other languages (excepting stuff like
Pascal/Modula-2/etc ...) '=' is used for assignment and '==' for
equality. Thus, in the name of aiding the adoption of Python, it makes
sense to follow this trend.

Fuzzyman wrote:
I may be about to get flamed as some heretic against the ancient
way..... but if assignment in conditional statements isn't
possible.... why do we need to use '==' instead of just '=' for if and
while statements ?

It's possible there are places where the interpreter could fail to
understand it, but I haven't found them yet. If there *aren't* any
situations where one could be confused for the other... then it's not
needed and is annoying :-)

The same could equally well be true for the trailing ':' after def, if
etc statements..............
Anyway - not withstanding a visit from the spanish inquisitionI'd be
interested to hear.....(And are the spanish inquisition likely to use
reasoning similar to the sort employed by those who advocate type
declarations and static languages)...

Regards,

Fuzzy
(recent python addict)

http://www.voidspace.org.uk/atlantib...thonutils.html

Jul 18 '05 #2

P: n/a
> It's possible there are places where the interpreter could fail to
understand it, but I haven't found them yet. If there *aren't* any
situations where one could be confused for the other... then it's not
needed and is annoying :-)
Thats a matter of taste - its easy to spot a comparision, and typing an
additional "=" if you're already over the key - well, python spares me so
wuch typing, I can live with that.
The same could equally well be true for the trailing ':' after def, if
etc statements..............


You are allowed to write

if cond: expression

so the colon makes sense here I believe. And as someone who loathed the
rules for ".", ",", ";" placement in pascal, I can live with the colon even
if a newline appears after the if/def/whatever. Think of the coding
conventions for C or JAVA that forbid the usage of

if(cond)
statement;

and instead insist on {} put around the statements.

Too much freedom in syntax leads to religious wars waged over the style to
use - I'm glad that python lacks that stylewars.

--
Regards,

Diez B. Roggisch
Jul 18 '05 #3

P: n/a

"Fuzzyman" <mi*****@foord.net> wrote in message
news:80*************************@posting.google.co m...
I may be about to get flamed as some heretic against the ancient
way..... but if assignment in conditional statements isn't
possible.... why do we need to use '==' instead of just '=' for if and
while statements ?
I believe the earliest versions of Python did use the single equal
sign for comparisons. I don't know why Guido changed it, but
it might be in order to keep his options open.

John Roth
Regards,

Fuzzy
(recent python addict)

Jul 18 '05 #4

P: n/a
JCM
Fuzzyman <mi*****@foord.net> wrote:
I may be about to get flamed as some heretic against the ancient
way..... but if assignment in conditional statements isn't
possible.... why do we need to use '==' instead of just '=' for if and
while statements ? It's possible there are places where the interpreter could fail to
understand it, but I haven't found them yet. If there *aren't* any
situations where one could be confused for the other... then it's not
needed and is annoying :-)


a = b = c
a = b == c
Jul 18 '05 #5

P: n/a
JCM wrote:
a = b = c
a = b == c


I had no idea you could do that! I was under the impression that
assignment didn't return a value in Python, hence it being impossible to
use one as a conditional.

That explains the use of '==' then - it's necessary to allow the above
construct.
Jul 18 '05 #6

P: n/a
JCM
Vrai Stacey <sp*******************@spam.trap.kbcfp.com> wrote:
JCM wrote:
a = b = c
a = b == c
I had no idea you could do that! I was under the impression that
assignment didn't return a value in Python, hence it being impossible to
use one as a conditional.


Assignment actually doesn't return a value; the multple-assignment
statement assigns a value to the left-hand-sides in a left-to-right
order. Eg:
a = 0
lst = [10, 20, 30, 40]
a = lst[a] = 3
lst

[10, 20, 30, 3]

(You might have expected [3, 20, 30, 40])
Jul 18 '05 #7

P: n/a
JCM wrote:
a = b = c
a = b == c


In fact, it is very funny to see the effect of a=b=c in Basic (or at
least in the Microsoft implementation I know of).

a = 2
b = 3
c = 3
a = b = c
a is assigned 1, which is the result of comparison of b and c. So in
Basic, the first = is like = in Python, and the other are like ==. This
is horrible...
Jul 18 '05 #8

P: n/a
"Fuzzyman" <mi*****@foord.net> wrote in message
news:80*************************@posting.google.co m...
I may be about to get flamed as some heretic against the ancient
way..... but if assignment in conditional statements isn't
possible.... why do we need to use '==' instead of just '=' for if and
while statements ?


One reason is that you can assign multiple variables at the same time:

a = b = c = 0

Would you prefer the first = to be assignment and the others to be
comparison?

(it's certainly possible -- PL/I does it that way -- but would you prefer
it?)
Jul 18 '05 #9

P: n/a
Vrai Stacey wrote:
JCM wrote:
a = b = c
a = b == c


I had no idea you could do that! I was under the impression that
assignment didn't return a value in Python, hence it being impossible
to
use one as a conditional.


Assignment can't, and that isn't one, but the assignment statement is
defined such that you can change assignments together with no problems.

So in

a = b = c

c is the expression evaluated, which is assigned to both a and b,
whereas in

a = b == c

b == c is the exression assigned to a.

--
__ Erik Max Francis && ma*@alcyone.com && http://www.alcyone.com/max/
/ \ San Jose, CA, USA && 37 20 N 121 53 W && &tSftDotIotE
\__/ But you're not going to be there tomorrow. And it's all about
tomorrow. -- Montgomery Brogan
Jul 18 '05 #10

P: n/a
Vrai Stacey <sp*******************@spam.trap.kbcfp.com> wrote:

I would assume it's because most people come to Python having programmed
other languages. In most other languages (excepting stuff like
Pascal/Modula-2/etc ...) '=' is used for assignment and '==' for
equality.


Interesting you would put it that way. I would have guessed that "most"
was not accurate. "In the languages most programmers use", yes, but not
"In most other languages".

C, C++, Java, C#, and Javascript all use = for assignment, == for
compare-equal.

Basic, VBScript, Cobol and SQL use = for both.

Pascal, Modula-X, Algol, Ada, Oberon, and Eiffel use := for assignment, =
for compare-equal.

Fortran uses = for assignment and .EQ. for compare-equal.

APL uses squiggle quad bang hack splat over splat dot splat.

LISP uses -- well, no one really knows what the actual syntax is for LISP.
--
- Tim Roberts, ti**@probo.com
Providenza & Boekelheide, Inc.
Jul 18 '05 #11

P: n/a
On Fri, 02 Apr 2004 17:14:23 -0800,
Tim Roberts <ti**@probo.com> wrote:
LISP uses -- well, no one really knows what the actual syntax is
for LISP.


The syntax is simple: (equality-operator comparand-1 comparand-2)

There are, howver, several equality-operators; some are more equal
than others.

HTH,
Heather

--
Heather Coppersmith
That's not right; that's not even wrong. -- Wolfgang Pauli
Jul 18 '05 #12

This discussion thread is closed

Replies have been disabled for this discussion.