Finally started on python..

R

Roger Gammans

Hi,

Having known about python since around the turn of the century ,
I finally found a (actually two) reason to learn it.

Python seems to have moved on a little since the 1.5.2 release
covered in the reference book (Essential Python) I bought way back when
so I could learn it when the time came but it seems to be mainly backward
compatible - is there anything that likely to catch me out -
I use linux, so heavy use of an upto date pydoc has filled the gaps
so far.

I do however have a couple of questions:-

1) A nice simple language query :
I found myself using this sort of code a bit in one of my recent
scripts
class Something:
def Entries(self):
sort=self._data.keys()
sort.sort()
for i in sort:
yield i

IS this preferable to just returning the sort array from the function
or not? Which is more runtime efficent.

Does it change if the last line was yield self._data instead as
that would require a map() in the function ?

2)
I've ended up coding a new wrapper for reading in data structures
from XML files (it wraps xml.sax) so that ctor are call on each end
tag with the XML Objects contents.

Does the python communitity have something like Perl's CPAN and
is there already something there taht does this or would it
be something that I could give back? Is there a naming
convention for such modules in python - I couldn't easly detect
one looking at the library which whip with python in Debian.

Sorry, for asking so much in a first post but I thought both
queries were link with by relative newby status.

TTFN
 
M

Marc 'BlackJack' Rintsch

Roger Gammans said:
I found myself using this sort of code a bit in one of my recent
scripts
class Something:
def Entries(self):
sort=self._data.keys()
sort.sort()
for i in sort:
yield i

IS this preferable to just returning the sort array from the function
or not? Which is more runtime efficent.

I see no benefit for a generator here as the whole list mus be build for
sorting anyway. If you still want return an iterable here it could be
written this way:

class Something(object):
def iter_entries(self):
return iter(sorted(self._data.keys()))

Just leave out the `iter()` call to return a sorted list.

If you want to make `Something` objects iterable over the sorted keys,
change the method name to `__iter__()`. Then you can use `Something`
objects like this:

something = Something()
# Puts some entries into `something`.
for entry in something:
print entry

Ciao,
Marc 'BlackJack' Rintsch
 
G

Gabriel Genellina

En Sat, 12 May 2007 14:09:06 -0300, Roger Gammans
Having known about python since around the turn of the century ,
I finally found a (actually two) reason to learn it.
Welcome!

Does the python communitity have something like Perl's CPAN and
is there already something there taht does this or would it
be something that I could give back? Is there a naming
convention for such modules in python - I couldn't easly detect
one looking at the library which whip with python in Debian.

See the Python wiki pages, you can get the answer to these and many more
questions:
http://wiki.python.org/moin/PublishingPythonModules and
http://wiki.python.org/moin/PythonStyle
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
474,431
Messages
2,571,677
Members
48,796
Latest member
Greg L.

Latest Threads

Top