'complex' function with string argument.

Mark H Harris harrismh777 at gmail.com
Mon Mar 17 17:18:56 CET 2014


On 3/15/14 11:26 AM, Jayanth Koushik wrote:

This is a very interesting philosophical question, one which I am 
surprised no one has answered; although, I think the reason for that 
might be entirely obvious.

You actually answered your own question, as you were asking it. If the 
doc says "whatever you do, don't push the purple button," well, leave 
the purple button alone.      :)   (I don't know, push it if you want)

If you monitor the PEP process, or have ever taken part in python-ideas, 
or python-dev (either directly, or just lurking) you will notice that 
python is developed through a very interesting active committee process 
(that is really something phenomenal; cool community).

How should one spell a complex number? Should we use i or j ? Should the 
imaginary part be set off somehow?  Should literals be parsed 
differently (or consistently) with correctly formed strings?  Who knows, 
beats me.

consider:
 >>> complex( 3   +  2   j)
SyntaxError: invalid syntax
 >>> complex( 3   +2j  )
(3+2j)
 >>>
I don't know... you tell me.

 >>> complex('3+2j')
(3+2j)
 >>> complex('3 +2j')
Traceback (most recent call last):
   File "<pyshell#17>", line 1, in <module>
     complex('3 +2j')
ValueError: complex() arg is a malformed string
 >>>

Again, beats me.  I just don't know.

But I do know that the spelling book says, Do it this way: 
complex('3+2j').

Seems simple enough.


Philosophically, I tend to think about it this way. A complex number is 
like any other number. I would not form a PI string like this> ' 3 .14 1 
5 9265 3 . . .'   I would rather see it formed like so, '3.1415926535'

This  '3 + 2j'  is not a number, its an algebraic sum.

This  '3+2j'  is a complex number.  Ok, maybe not, but its closer to 
what we expect (I'm sorry, but I like  i  instead  of  j  )

Also, philosophically, C ignores white space;  python does not.

I agree with this now; before I did not. White space is just as much a 
part of how interpretation occurs, within symbol processing/parsing. 
Some choices are arbitrary, some are community concurrence (PEPs), some 
are philosophical, and most are just convenient intuition.

My Greek professor used to say, "there is no 'why' in Greek".

Python is similar.

Cheers




More information about the Python-list mailing list