On 27/10/2016 19:09, BartC wrote:
On 27/10/2016 17:13, Steve D'Aprano wrote:
On Fri, 28 Oct 2016 12:13 am, BartC wrote:

   print "Enter 3 numbers: "
   readln a,b,c

How is the interpreter supposed to know that a, b, c are numbers? What
sort
of numbers? 16-bit integers, 80-bit floats, Bignums, complex,
Fractions, or
something else?

But in a dynamically typed language, the compiler has no idea what you
expect a, b and c to be. So it returns text, and you can convert it
yourself.

I notice that when it comes to reading command-line arguments, then Python's sys.argv presents them as a list, not one long string.

And the list is just a series of strings, so needing to know whether any parameter was a number or whatever obviously wasn't a problem. It just makes each item into a string (actually that might be a better default than mine).

This is a very similar issue to reading items from a line of user input.

So why doesn't sys.argv just return a single string if a line is so easy to parse?

(That's exactly what Windows' WinMain() function does - optional entry point for executables under Windows. But C's main() entry point chops the command line up into separate strings like Python.

Also - this might some bearing on why Python does it that way - under Linux, a parameter such as *.py is replaced by the names of ALL the files that end in .py. (I was rather astonished when I find out. But I've recently had to deal with a directory containing 3,400,000 files so having a single "*" converted into 3.4 million filenames would be unwelcome.))

--
Bartc


--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to