Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
übersetzt. Der zweite Parameter ist offenbar in diesem Fall nochmals die Liste der zu importierenden Namen. Wozu wird die benötigt? Und was soll die -1?
Schau dir mal den Namespace an, nachdem du soetwas importiert hast...
[url=http://www.python-forum.de/post-86552.html]~ Wahnsinn ist auch nur eine andere Form der Intelligenz ~[/url]
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
sma hat geschrieben:Was bedeuten also -1 und None?
-1: kein absoluter import (siehe from __future__ import absolute_import), 0 absolute imports. Das None ist das fromlist Argument für __import__.
Beim Unteren Import das gleiche, nur das das statt None jetzt ein Tuple ist. IMPORT_FROM macht soweit ich weiß nicht viel anders als getattr, deswegen das Tuple für das __import__ Callable, dass wie man ja weiß, vom User überschrieben werden kann.
mitsuhiko, danke. Ich verstehe jetzt die Zahl (die auch 1, 2, ... bei relativen Imports sein kann) und das Tupel wird wohl einfach übergeben, damit die __import__-Funktion weiß, was gleich danach aus dem Modul gezogen werden soll.
Ich bin ein bisschen irritiert, dass die Dokumentation von __import__ Listen als Beispiel nennt, obwohl der Interpreter intern Tupel benutzt. Überschreibe ich die Funktion und lasse mir anzeigen, was dort ankommt, sind es Tupel.
Imports in Python sind doch kniffeliger, als ich mir das so ohne wirkliches Studium der Sprachspezifikation zusammengereimt habe. Da muss ich wohl nochmal ran bei meinem Interpreter :(
sma hat geschrieben:Imports in Python sind doch kniffeliger, als ich mir das so ohne wirkliches Studium der Sprachspezifikation zusammengereimt habe. Da muss ich wohl nochmal ran bei meinem Interpreter
Imports sind auch Sprachtechnisch etwas unsauber gelöst und nicht genau spezifiziert. IronPython kann zum Beispiel eine Menge Python Libraries nicht richtig importieren (darunter Pygments) weil es das Modul erst nach erfolgreicher Initialisierung in sys.modules unterbringt.
6.12. der Sprachspezifikation sagt aber recht eindeutig: "Otherwise, an empty module of the given name is created and inserted in the module table, and then the code block is executed in the context of this module". Damit macht IronPython es falsch, wenn sie das Modul-Objekt erst nach der Initialisierung in sys.modules einhängen.