Warum verursacht __future__ import * einen Fehler?

8

Ich habe den folgenden Import verwendet:

%Vor%

aber habe diesen Fehler:

%Vor%

Was bedeutet dieser Fehler?

    
lxjhk 17.12.2014, 04:44
quelle

2 Antworten

9

Während der Import von * aus dem zukünftigen Modul wahrscheinlich gefährlich ist und aus den Gründen, die John Zwinck erwähnt, vermieden werden sollte, war es interessant herauszufinden, warum das nicht funktioniert. Es funktioniert anders als die übliche Python-Import-Syntax, mit der Sie alles aus dem Modul mit * greifen können.

Sie können sehen, was passiert, indem Sie Lib/compiler/future.py in Ihrem Python-Installationsverzeichnis öffnen: Alle Importanweisungen, die aus __future__ importieren, werden über einen speziellen Parser ausgeführt, der nur das Importieren einer der vordefinierten Funktionen ermöglicht. Aus dem Quellcode von FutureParser :

%Vor%

Sie haben also zu Recht bemerkt, dass der Import von __future__ ein Sonderfall ist, der ein wenig anders funktioniert als der übliche Python-Import-Prozess, aber dafür gibt es gute Gründe.

    
Marius 17.12.2014, 04:54
quelle
7

Das Importieren von "allem" aus der Zukunft ist weder wünschenswert noch sinnvoll. In der Tat sollten Sie die meiste Zeit nicht * importieren, aber im Falle von __future__ ist es besonders heimtückisch: welche Funktionen wollen Sie bekommen? Es wäre sehr schwierig, ein korrektes Programm zu schreiben, das mit zukünftigen Versionen von Python funktioniert, deren Eigenschaften noch nicht bekannt sind.

    
John Zwinck 17.12.2014 04:47
quelle

Tags und Links