On 22/03/2016 01:01, Steven D'Aprano wrote:
On Tue, 22 Mar 2016 06:43 am, BartC wrote:
This code was adapted from a program that used:
readstrfile(filename)
which either returned the contents of the file as a string, or 0.
What an interesting function. And I don't mean that in a good way.
So if it returns 0, how do you know what the problem is? Mistyped file name?
Permission denied? File doesn't actually exist? Disk corruption and you
can't open the file? Some weird OS problem where you can't *close* the
file? (That can actually happen, although it's never happened to me.) How
do you debug any problems, given only "0" as a result?
What happens if you read (let's say) a 20GB Blue-Ray disk image?
I think you're making far too much of a throwaway function to grab a
file off disk and into memory.
But out of interest, how would /you/ write a function that takes a
file-spec and turns it into an in-memory string? And what would its use
look like?
Pythonic code probably uses a lot of iterables:
for value in something:
...
in preference to Pascal code written in Python:
for index in range(len(something)):
value = something[index]
(Suppose you need both the value and its index in the loop? Then the
one-line for above won't work. For example, 'something' is [10,20,30]
and you want to print:
0: 10
1: 20
2: 30 )
...
or worse:
index = 0
while index < len(something):
value = something[index]
...
index += 1
(I don't know where that while-loop idiom comes from. C? Assembly? Penitent
monks living in hair shirts in the desert and flogging themselves with
chains every single night to mortify the accursed flesh? But I'm seeing it
a lot in code written by beginners. I presume somebody, or some book, is
teaching it to them. "Learn Python The Hard Way" perhaps?)
Are you suggesting 'while' is not needed? Not everything fits into a
for-loop you know! Why, take my own readtoken() function:
symbol = anything_other_than_skip_sym
while symbol != skip_sym:
symbol = readnextsymbol()
Of course, a repeat-until or repeat-while would suit this better (but I
don't know how it fits into Python syntax). So there's a case here for
increasing the number of loop statements not reducing them.
--
Bartc
--
https://mail.python.org/mailman/listinfo/python-list