Hat Python so etwas wie C ++?

7

In C ++ können Sie die Lesbarkeit Ihres Codes oft durch sorgfältige Verwendung des Schlüsselwortes "using" drastisch verbessern, zum Beispiel:

%Vor%

wird

%Vor%

Gibt es für Python etwas Ähnliches, oder muss ich alles vollständig qualifizieren?

Ich füge den Haftungsausschluss hinzu, von dem ich weiß, dass die Verwendung seine Fallstricke hat und dass der Umfang angemessen begrenzt sein sollte.

    
Doug T. 15.02.2009, 01:50
quelle

5 Antworten

19

Wie Bill sagte, Python hat die Konstruktion

%Vor%

Sie können jedoch auch explizit angeben, welche Namen Sie aus dem Modul (Namespace) importieren möchten:

%Vor%

Dies macht den Code noch lesbarer / leichter verständlich, da jemand, der einen Bezeichner in der Quelle sieht, nicht alle importierten Module durchsuchen muss, um zu sehen, wo er herkommt. Hier ist eine verwandte Frage: Namensraumspezifikation in Abwesenheit von Ambuguität

BEARBEITEN : Als Antwort auf den Kommentar von Pax werde ich erwähnen, dass Sie auch Dinge wie

schreiben können %Vor%

aber dann müssen Sie

schreiben %Vor%

statt nur

%Vor%

Das ist natürlich nicht unbedingt eine schlechte Sache. Ich verwende normalerweise eine Mischung aus den from X import y und import X.y Formen, was auch immer ich fühle, macht meinen Code am klarsten. Es ist sicherlich eine subjektive Sache in gewissem Maße.

    
David Z 15.02.2009, 01:58
quelle
6
%Vor%

oder

%Vor%

oder

%Vor%

Dabei ist X das Python-Modul, das Sie verwenden möchten.

Es wäre hilfreich für Sie, uns ein Python-Codebeispiel zu geben, das Ihrer Meinung nach bereinigt werden muss.

    
Bill the Lizard 15.02.2009 01:54
quelle
5

Sicher, Pythons Dynamik macht das trivial. Wenn Sie eine Klasse tief in einem Namensraum vergraben haben: foo.bar.baz.blah, können Sie Folgendes tun:

%Vor%     
Dana 15.02.2009 01:56
quelle
1

Zusätzlich zu Davids Antwort:

  1. Man sollte runde Klammern in from X import (foo, bar, blah) verwenden, um PEP8 zu verwenden.
  2. Die vollständige Syntax erlaubt es, Paketnamen im Rahmen des aktuellen Moduls wie in from foo import bar as baz

Ich empfehle, das Handbuch für das Schlüsselimport , das eingebaute __import__ , zu lesen und Erklärung für sys.modules als weitere Lektüre.

    
Yauhen Yakimovich 06.01.2012 07:35
quelle
0

Beachten Sie, dass

%Vor%

funktioniert auch, wenn bar ein Modul im Paket foo ist. Auf diese Weise können Sie die Namensraumverschmutzung begrenzen, ohne jede Funktion / Klasse in foo.bar benennen zu müssen, die Sie möglicherweise verwenden möchten. Es hilft auch Lesern Ihres Codes, weil sie einen Aufruf von bar.baz() sehen und eine bessere Idee haben, woher baz stammt.

    
ruds 15.02.2009 05:23
quelle

Tags und Links