Seite 1 von 1

LC exportiert Laufvariable?

Verfasst: Samstag 1. März 2008, 00:22
von Gnushi
Hallo zusammen!

Folgendes Programm funktioniert merkwürdigerweise:

Code: Alles auswählen

def f(l):
    new_l = [i for i in l if i % 2 == 0]
    print i

f(range(10))
Ist es gewollt, dass eine Laufvariable aus einer List Comprehension exportiert wird?

GnuShi

Verfasst: Samstag 1. März 2008, 01:10
von BlackJack
Ja und nein. Es ist kein Bug, also schon irgendwie gewollt, aber in Python 3.0 wird dieses Leck verschwinden. Generator-Ausdrücke lecken nicht.

Verfasst: Samstag 1. März 2008, 11:55
von Leonidas
Mir ist es auch schon öfter passiert, das die Variablen aus den LCs heraus-leaken was ich in der Regel nicht besonders toll fand, weil es mir irgendwas kaputt gemacht hat. Schön, dass sich das in Python 3.0 ändert.