Synergieeffekte zwischen Funktionsaufrufen?
Verfasst: Samstag 8. September 2012, 05:30
Hallo Python-Forum, ich bin neu hier. ^.^
Nachdem ich auf ein seltsames Problem gestoßen bin, das sich nicht einfach in eine Suchanfrage übersetzen ließ, dachte ich, ich suche mal auf diesem Wege Rat. Wäre toll, wenn einer von euch eine Idee hätte.
Ich suche nach einer Erklärung für folgendes Phänomen:
Meine Funktion grade bekommt einen richtigen und einen potentiell falschen String als Eingabe, sucht unter anderem Tippfehler im potentiell falschen String, sammelt sie und gibt dann als Ergebnis die Liste der Typos aus.
Ich habe eine Reihe von Testfällen, die alle wie erwartet verarbeitet werden, wenn ich sie einzeln durchlaufen lasse. Packe ich aber alle Testeingaben in eine Liste und gehe dann mit
durch diese Liste, finde ich z.B. im Ergebnis für Zeile n einen Fehler aus Zeile n-1.
Also, stark vereinfacht:
Anscheinend wird die Liste der Typos, die ich da anlege, irgendwie weitergegeben an den nächsten Funktionsaufruf. Ist das ein bekanntes Problem? Wurde da etwas in einem Cache abgelegt, bzw. gibt es etwas, das ich zwischen den Funktionsaufrufen zurücksetzen kann?
Nachdem ich auf ein seltsames Problem gestoßen bin, das sich nicht einfach in eine Suchanfrage übersetzen ließ, dachte ich, ich suche mal auf diesem Wege Rat. Wäre toll, wenn einer von euch eine Idee hätte.
Ich suche nach einer Erklärung für folgendes Phänomen:
Meine Funktion grade bekommt einen richtigen und einen potentiell falschen String als Eingabe, sucht unter anderem Tippfehler im potentiell falschen String, sammelt sie und gibt dann als Ergebnis die Liste der Typos aus.
Ich habe eine Reihe von Testfällen, die alle wie erwartet verarbeitet werden, wenn ich sie einzeln durchlaufen lasse. Packe ich aber alle Testeingaben in eine Liste und gehe dann mit
Code: Alles auswählen
for (seq1, seq2, value) in specs:
self.assertTupleEqual(grade(seq1, seq2), value)Also, stark vereinfacht:
Code: Alles auswählen
>>>eingabe_mit_typos_1 = [typo1_1, ok, typo1_2]
>>>eingabe_mit_typos_2 = [ok, typo2_1, ok]
>>> grade(eingabe_mit_typos_1)
[typo1_1, typo1_2]
>>>grade(eingabe_mit_typos_2)
[typo2_1]
>>>for case in [eingabe_mit_typos_1, eingabe_mit_typos_2]:
grade(case)
[typo1_1, typo1_2]
[typo1_1, typo1_2, typo_2_1]