2016-04-30 11 views
0

Was macht __name__? Ich habe es nur gepaart mit __main__ und nichts anderes gesehen.Was ist der Zweck von __name__?

Ich weiß, dass der Klassiker if __name__ == __main__: das Verhalten definiert, wenn es als ein Paket vs als Stand-alone ausgeführt wird.

Aber welche anderen Verwendungen gibt es für __name__?

+3

Mögliche Duplikat [Was bedeutet, wenn \ _ \ _ name \ _ \ _ == "\ _ \ _ main \ _ \ _" tun?] (http://stackoverflow.com/questions/419163/what-does-if-name-main-do). Ich weiß, dass Sie Ihr Wissen über diesen speziellen Gebrauch erwähnt haben, aber die akzeptierte Antwort gibt Ihnen die Antwort, die Sie suchen. – zondo

+4

'logger = logging.getLogger (__ name __)' –

+0

Ich sehe nicht die Antwort, die ich will. – drum

Antwort

3

__name__ ist "__main__", wenn Sie das Skript direkt ausführen. Wenn Sie ein Modul importieren, ist __name__ der Name des Moduls.

foo.py:

print(__name__) 

bar.py

import foo 

Führen Sie die Skripte:

$ python foo.py 
__main__ 
$ python bar.py 
foo 
+0

Gut bearbeiten. Erklärte das nur selbst. –

+0

Gibt es eine andere Verwendung als den Namen des Moduls zu kennen? – drum

+0

Das Idiom "if __name__ = '__main__" ermöglicht es Ihnen, abhängig davon, ob ein Skript direkt oder als Modul aufgerufen wird, unterschiedliche Verhaltensweisen zu erstellen. Dies ist der häufigste Anwendungsfall. Es kann möglicherweise beim Debuggen oder Berichten in Komponententests verwendet werden. –