[Python-de] Erweiterte "For"-Schleife
André Malo
ndparker at gmail.com
Mi Mai 16 21:46:46 CEST 2012
* Olе Streicher wrote:
> Das ist schon klar. Mein Problem ist aber Minidom:
>
> for c in f.childNodes if c.localName == 'header':
> for p in c.childNodes if p.localName == 'property':
> print('%s = %s' % (p.getAttribute('name'),
> p.getAttribute('value')))
>
> was in dieser Form leichtverständlich ist, aber ohne den syntaktischen
> Zucker eben deutlich schwerer nachvollziehbar.
ich baue mir bei sowas gerne lokale Mini-Funktionen, die die Semantik besser
abbilden. Durch die Lokalität bleibt auch das Gesamtbild erhalten und der
globale Namensraum wird nicht gestört.
def children(node, which):
# Einzeiler:
return (child for child in node.childNodes if child.localName == which)
# ODER
# ich neige allerdings zu for-schleifen mir yield.
# vertikal ist netter:
for child in node.childNodes:
if child.localName == which:
yield child
for header in children(f, 'header'):
for prop in children(header, 'property'):
# dosomething
nd
--
die (eval q-qq[Just Another Perl Hacker
]
;-)
# André Malo, <http://www.perlig.de/> #
Mehr Informationen über die Mailingliste python-de