Frage

Die PEP 8 empfiehlt, dass die Module zu Beginn der Programme importiert werden.

Nun, ich glaube, dass einige von ihnen am Anfang des main Programms (das heißt, nach if __name__ == '__main__') importiert Sinn macht. Zum Beispiel, wenn das Hauptprogramm Argument aus der Kommandozeile liest, neige ich import sys am Anfang des main Programms zu tun: So hat sys nicht importiert werden, wenn der Code verwendet wird, wie ein Modul, da es keine Notwendigkeit, in diesem Fall für den Zugriff Befehlszeilenargument.

Wie schlimm ist diese Verletzung zu PEP 8? sollte ich tun dies unterlassen? oder wäre es sinnvoll sein, PEP 8 zu ändern?

War es hilfreich?

Lösung

ich kann man nicht wirklich sagen, wie schlecht dies zu tun ist.

Allerdings habe ich stark verbesserte Leistung (Reaktionszeit, Last) für einen Web-App durch den Import von bestimmten Bibliotheken nur bei der ersten Nutzung.

BTW, ist die folgende auch von PEP 8:

  

Aber am wichtigsten ist: wissen, wann man sein   inkonsistent - manchmal der Stil   Führung einfach nicht anzuwenden. wenn in   Zweifel, verwenden Sie am besten Urteil. Aussehen   bei anderen Beispielen und entscheiden, was   am besten aussieht. Und zögern Sie nicht,   fragen!

Andere Tipps

Im Allgemeinen Ich glaube nicht, dass es viel Schaden im späten Import für Module, die nicht benötigt werden.

Allerdings sys ich auf jeden Fall früh, an der Spitze importieren würde. Es ist so ein gemeinsames Modul, dass es sehr wahrscheinlich, könnten Sie sys an anderer Stelle in Ihrem Skript verwenden und nicht bemerkt, dass es nicht immer importiert wird. sys ist auch eines der Module, die immer von Python geladen wird selbst, so dass Sie nicht jedes Modul die Startzeit verkürzen, indem Sie den Import zu vermeiden (nicht, dass es für sys viel Start ist sowieso).

Ich würde Ihnen empfehlen, zu tun, was Sie fühlen, ist am besten geeignet, wenn es nichts in PEP über Ihr Anliegen ist.

sys importieren dauert nicht wirklich so lange, dass ich darum kümmern würde. Einige Module nehmen mehr jedoch. Ich glaube nicht, sys wirklich den Namensraum sehr verstopft. Ich würde nicht eine Variable oder Klasse namens sys verwenden, unabhängig.

Wenn Sie denken, es ist mehr schaden als nützen es an der Spitze zu haben, mit allen Mitteln tun es wie Sie wollen. PEP 8 ist nur eine Führungslinie und eine Menge Code, den Sie sehen es nicht entsprechen.

Das Problem ist nicht die Leistung.

Die Frage ist Klarheit.

Ihr „Haupt“ Programm ist nur ein Hauptprogramm heute. Morgen kann es sich um eine Bibliothek in einer höheren Ebene Hauptprogramm enthalten sein. Später wird es nur ein Modul in einem größeren Paket sein.

Da Ihr „Haupt“ Programm das Leben verändern kann, haben Sie zwei Antworten.

  1. Isolieren der "main" Dinge in if __name__ == "__main__". Dies ist nicht eine groteske Verletzung der PEP-8. Dies ist eine vernünftige Art und Weise Dinge zu verpacken.

  2. Versuchen Sie, die Anzahl der Funktionen in Ihrem „main“ Programmskripte zu begrenzen. Versuchen Sie, sie zu imports und die if __name__ == "__main__" Sachen zu halten. Wenn Ihr Haupt Skript klein ist, dann Ihr Import Frage geht weg.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top