2015-11-15 18 views
5

Jestem nowy w Pythonie, próbuję zbudować stary plik Pythona w Pythonie 3. Mam kilka błędów kompilacji, które rozwiązałem. Ale w tym momencie dostaję się ponad błąd. Nie mam pojęcia, jak to naprawić. Sekcja kodu wygląda jak poniżej.Python 3, moduł 'itertools' nie ma atrybutu "ifilter"

return itertools.ifilter(lambda i: i.state == "IS", self.storage) 

Odpowiedz

9

itertools.ifilter() został usunięty w Pythonie 3, ponieważ wbudowany filter() function zapewnia taką samą funkcjonalność teraz.

Jeśli trzeba napisać kod, który może być zasilany zarówno Python 2 i Python 3, import wykorzystania z future_builtins module (tylko w Pythonie 2, więc użyć try...except ImportError: strażnika):

try: 
    # Python 2 
    from future_builtins import filter 
except ImportError: 
    # Python 3 
    pass 

return filter(lambda i: i.state == "IS", self.storage) 
Powiązane problemy