<br><br><div><span class="gmail_quote">On 7/19/05, <b class="gmail_sendername">Kent Johnson</b> &lt;<a href="mailto:kent37@tds.net">kent37@tds.net</a>&gt; wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Luis N wrote:<br>&gt; I'd appreciate some comments on my use of globals and the map function.<br>&gt;<br>&gt; import metakit<br>&gt; import marshal<br>&gt;<br>&gt; db = metakit.storage('<a href="http://addy.mk">addy.mk</a>
 &lt;<a href="http://addy.mk">http://addy.mk</a>&gt;',1)<br>&gt; dbs = db.getas('dbs[db:S,marshal:B]')<br>&gt;<br>&gt; def li(i):<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; i = i[:-2]<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; return i<br>&gt;<br>&gt; def selectDB(f):<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; if 
f.has_key('db'):<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; d = []<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; d['db'] = f.get('db').value<br><br>The above line is not valid Python; list indices must be integers</blockquote><br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; id = dbs.find(d)<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if id != -1:<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; global desc, vw, primaryKey<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; desc = 
marshal.loads(dbs[id].marshal)<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vw = db.getas('%s%s' % (dbs[id].db,desc))<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; desc = map(li,desc)<br><br>This
use of map seems fine to me. You could also write it as a list
comprehension which is more mainstream Python idiom and maybe more
readable in this case as it is self-contained:<br>&nbsp;&nbsp;desc = [ i[:-2] for i in desc ]<br><br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; primaryKey = desc[0]<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return desc, vw, primaryKey<br><br>I
don't see the need for the global declaration; desc, vw, primaryKey are
all assigned within this function and returned to the caller.</blockquote><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Kent</blockquote>
<div><br>
<br>

My blooper, should be d={} <br>
<br>
In this case consider desc, vw, and primaryKey to be of the same
importance as dbs, other functions must access them in a way that
renders their being local impossible, unless the logic where to be
encapsulated in a class, which didn't seem necessary.<br>
</div><br></div><br>