Sie das .next()
Methode nicht direkt aufrufen. Verwenden Sie die next()
function auf einem Iterator statt:
for u in up:
head = next(u)[1:].strip()
q = "".join(s.strip() for s in next(u))
Die next()
Funktion wird die richtige Haken auf beiden Python 2 und 3.
jedoch aufrufen, wird die Fehlermeldung, die Sie von futurize
sehen gibt an, dass Sie kann auch haben den Namen next
an anderer Stelle in Ihrem Code gebunden.
Wenn Sie etwas haben, wie:
next = some_expression
oder
def next(...):
# some function
als globaler, dann sind Sie die eingebaute in next()
Funktion Shadowing. Benennen Sie jede andere Verwendung von next
als global in diesem Modul um, um Probleme zu vermeiden.
Zum Beispiel die folgende Demo-Code wirft die Nachricht Sie sehen:
$ cat demo.py
def next(): pass
n = g.next()
$ bin/futurize demo.py
RefactoringTool: Skipping optional fixer: idioms
RefactoringTool: Skipping optional fixer: ws_comma
RefactoringTool: Refactored demo.py
--- demo.py (original)
+++ demo.py (refactored)
@@ -1,2 +1,2 @@
def next(): pass
-n = g.next()
+n = g.__next__()
RefactoringTool: Files that need to be modified:
RefactoringTool: demo.py
RefactoringTool: Warnings/messages while refactoring:
RefactoringTool: ### In file demo.py ###
RefactoringTool: Line 1: Calls to builtin next() possibly shadowed by global binding
RefactoringTool: ### In file demo.py ###
RefactoringTool: Line 1: Calls to builtin next() possibly shadowed by global binding
Beachten Sie, wie das Werkzeug verwendet dann g.__next__()
statt g.next()
, mit next()
als Funktion zu vermeiden.
die next
Funktion aus diesem Code führt Entfernen:
$ cat demo.py
# def next(): pass
n = g.next()
$ bin/futurize demo.py
RefactoringTool: Skipping optional fixer: idioms
RefactoringTool: Skipping optional fixer: ws_comma
RefactoringTool: Refactored demo.py
--- demo.py (original)
+++ demo.py (refactored)
@@ -1,2 +1,2 @@
# def next(): pass
-n = g.next()
+n = next(g)
RefactoringTool: Files that need to be modified:
RefactoringTool: demo.py
@Martijn, Vielen Dank, Ihre Arbeit jetzt! – user3698773