1. Foren
  2. Kommentare
  3. OpenSource-Forum
  4. Alle Kommentare zum Artikel
  5. › NZXT: Lüfter auch unter Linux…

Python Tipps

Neue Foren im Freiraum! Raumfahrt und freie Software haben jetzt einen Platz, die Games tummeln sich jetzt alle in einem Forum.
  1. Thema

Neues Thema


  1. Python Tipps

    Autor: darkshines 21.03.17 - 12:38

    Du scheinst einen guten Start mit Python hingelegt zu haben. Leider befolgst du ein paar Anti-Pattern die gänzlich untypisch, schwer zu lesen oder ineffizient sind. Ich hätte hier ein paar Verbesserungsvorschläge, als Lernhilfe für später :)

    cleanupconfig:
    Die Stringmanipulation direkt über Indizes wird meistens vermieden, besonders weil man das mächtige re Modul für Regular Expressions in Python an Bord hat. Die Funktion könntest du umschreiben zu:

    import re
    return re.sub(r'#.*?\r?\n', '', str)

    Damit werden einfach alle Zeichenketten durch den leeren String ersetzt, welche mit einem Pound Symbol anfangen und mit einem Zeilenumbruch aufhören.

    parseconfig:
    Dictionaries haben eine Funktion iteritems(), die genau das tut, was du dort brauchts. Also:
    for idx, config in cfg.iteritems():
    self.add_device(idx, config)

    getall:
    Eine riesige Alarmglocke muss jedesmal in deinem Kopf losschallen, wenn du das Pattern range(len(...)) irgendwo siehst. Wenn es absolut unvermeidbar ist, auf den index zuzugreifen, benutze enumerate(). Obwohl das an der Stelle, ehrlich gesagt, mit der JSON Konvertierung in self.getdevice() wohl zu aufwändig wäre, das anders zu schreiben :)

    Wenn du mehr zum "Pythonic way" erfahren möchtest, schau dir die Vorträge von Raymond Hettinger an. Er zeigt auf unheimlich unterhaltsame und sympatische Art und Weise, wie man es meistens besser machen kann, in Python.

  2. Re: Python Tipps

    Autor: xvzf 21.03.17 - 12:46

    Danke für die Rückmeldung!

    C/C++, Java (Kriegsfuß) bin ich fit drin - Python bin ich immer noch am lernen à la "Learning by doing"!
    Das einzige wo ich Python bisher verwendet habe war in einer Vorlesung über Netzwerksicherheit!

    Cheers,
    Matthias

  3. Re: Python Tipps

    Autor: glasen77 21.03.17 - 15:48

    darkshines schrieb:
    --------------------------------------------------------------------------------
    > cleanupconfig:
    > Die Stringmanipulation direkt über Indizes wird meistens vermieden,
    > besonders weil man das mächtige re Modul für Regular Expressions in Python
    > an Bord hat. Die Funktion könntest du umschreiben zu:
    >
    > import re
    > return re.sub(r'#.*?\r?\n', '', str)

    Die Frage ist nur, ob es sich jedes Mal lohnt RegExes zu benutzen, da diese nicht besonders performant sind. Wenn der String immer identisch aufgebaut ist, spricht nichts gegen die Verwendung von Indizes. Das mag bei dem Programm keine Rolle spielen, aber wenn man mal eine Datei mit zig-Millionen Zeilen einlesen muss, addiert sich das ganz schön auf.

    > parseconfig:
    > Dictionaries haben eine Funktion iteritems(), die genau das tut, was du
    > dort brauchts. Also:
    > for idx, config in cfg.iteritems():
    > self.add_device(idx, config)

    ".iteritems()" ist Python2, die Syntax für Python3 lautet ".items()".

  4. Re: Python Tipps

    Autor: darkshines 21.03.17 - 15:50

    Ha! Ja, Macht der Gewohnheit :) Hier auf der Arbeit sind wir noch nicht auf Python 3 umgestiegen.

  1. Thema

Neues Thema


Um zu kommentieren, loggen Sie sich bitte ein oder registrieren Sie sich. Sie müssen ausserdem in Ihrem Account-Profil unter Forum einen Nutzernamen vergeben haben. Zum Login

Stellenmarkt
  1. Software Consultant / Project Manager (m/w/d) Software Logistics
    ecovium GmbH, deutschlandweit (Home-Office möglich)
  2. Wissenschaftlicher Mitarbeiter (m/w/d) - Intelligente Produktion und Digitale Zwillinge
    Fraunhofer-Institut für Produktionstechnik und Automatisierung IPA, Stuttgart
  3. Sachbearbeiter (m/w/d) Filial-Hotline
    Dirk Rossmann GmbH, Burgwedel
  4. Mitarbeiter*in (m/w/d) Zeitmanagement
    Universitätsmedizin der Johannes Gutenberg-Universität Mainz, Mainz

Detailsuche


Golem pur
  • Golem.de ohne Werbung nutzen

Anzeige
Spiele-Angebote
  1. (u. a. A Plague Tale - Innocence für 8,99€, Call of Cthulhu für 7,25€, Aliens - Fireteam...
  2. 42,99€ (UVP 50€)
  3. (3500+ Deals, Blitzangebote, Giveaways)


Haben wir etwas übersehen?

E-Mail an news@golem.de