Interviewfrage für Python-Entwickler

Erklär mir, was tatsächlich passiert, wenn du eine Generator-Funktion aufrufst.

Worauf der Interviewer abzielt, wie du deine Antwort aufbaust und ein gesprochenes Beispiel zum Anpassen.

Kurzantwort

Der Aufruf einer Generator-Funktion führt überhaupt keinen Code im Body aus; er gibt ein Generator-Objekt zurück. Der Body läuft erst, wenn du next darauf aufrufst, und zwar bis zum ersten yield, das den Frame samt seiner lokalen Variablen einfriert. Jedes weitere next macht exakt dort weiter, wo es aufgehört hat. Wenn der Body zurückkehrt, wirft der Generator StopIteration, was eine for-Schleife für dich abfängt.

Warum Interviewer das fragen

Das prüft, ob du suspendierte Ausführung verstehst, also das mentale Modell hinter Iteratoren, mit contextlib geschriebenen Context Managern und async Coroutines. Ein Interviewer merkt in zwei Sätzen, ob du Generatoren nur benutzt hast oder ob du weißt, dass der Frame zwischen den yields erhalten bleibt. Das öffnet außerdem Nachfragen zum Iterator-Protokoll und zu send und throw.

So baust du deine Antwort auf

  • Sag, dass der Aufruf ein Objekt liefert und nichts ausführt.
  • Beschreib den Suspend-und-Resume-Zyklus um yield.
  • Erklär, wie die Schleife das Ende erkennt.
  • Verbinde es mit dem Iterator-Protokoll.

Beispielantwort

Gesprochenes Beispiel, erste Person

Der Aufruf macht fast nichts. Python sieht das Schlüsselwort yield zur Compile-Zeit, markiert die Funktion als Generator, und der Aufruf gibt einfach ein Generator-Objekt mit einem eingefrorenen Frame zurück. Nichts im Body ist gelaufen, was Leute stolpern lässt, die erwarten, dass ihre Validierung ganz oben sofort feuert. Das erste next läuft bis zum ersten yield, reicht den Wert raus und friert den Frame mit allen noch lebenden Locals ein. Rufst du next erneut auf, geht die Ausführung in der Zeile nach dem yield weiter. Fällt die Funktion hinten raus oder trifft ein nacktes return, wirft Python StopIteration, und eine for-Schleife nimmt das als Signal zum Aufhören. Unter der Haube erfüllt ein Generator das Iterator-Protokoll, weil er sowohl dunder iter als auch dunder next hat, also funktioniert er überall dort, wo ein Iterable erwartet wird. Darauf baue ich Streaming-Pipelines. In einem Projekt hatten wir vier Transformationsstufen als Generatoren verkettet, und keine Stufe hielt je mehr als einen einzigen Datensatz.

Steht dieses Vorstellungsgespräch bald an? GhostPilot hört bei deinem Live-Call mit, erkennt die Frage in dem Moment, in dem sie gestellt wird, und bringt dir eine strukturierte Antwort in Echtzeit auf den Bildschirm. Probier es im nächsten Mock aus, oder hol dir einen $29 Session Pass, kein Abo, für den Ernstfall.

So funktioniert es

Nachfragen, mit denen du rechnen solltest

  • Was gibt dir yield from?
  • Wie funktionieren send und throw auf einem Generator?
  • Was ist an einem async Generator anders?

Weitere Fragen für Python-Entwickler

Dein Interviewer stellt seine eigene Version davon. Kopier deine echte Stellenbeschreibung in den kostenlosen Question Predictor und bekomm die 20 Fragen, die diese Rolle am wahrscheinlichsten stellt, samt dem, worauf jede wirklich abzielt.

Meine Fragen vorhersagen

Üb die harten Fragen, bevor sie gestellt werden

Trainier mit einem Live-Copiloten und geh dann vorbereitet rein. Ein $29 Session Pass bringt dich durch das Vorstellungsgespräch, ohne Abo und ohne Bindung.

GhostPilot holen