"Late-binding" isn't the issue with closures on a loop

Offen
#1,030 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Anfängerfreundlichkeit
35/100
Issue-Typ
Dokumentation
Klarheit
Muss geklärt werden
Aktivitätsstatus
Veraltet
Tech-Stack
lua, python
Bereich
documentation

Rechercherichtung

Finde die Passage im Leitfaden, die Closures in einer Schleife erklärt, und vergleiche ihre Formulierung mit dem verlinkten Lua-Beispiel und dem Beispiel für verschachtelte Funktionen im Issue. Erledigt ist die Aufgabe, wenn die Erklärung late binding von Block-Scope unterscheidet und das Verhalten von Python korrekt beschreibt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

Lua also has late-binding closures, as can be seen here: https://repl.it/repls/HotpinkEagerQuery (the first one intentionally misused to highlight the difference between block scope and function scope)

It just also has block scope. That's the thing python doesn't have, thus causing the confusion.

Block scope is better emulated with nested functions, such as:

for i in range(5):
  def block_scope_emulation(i):
    def thing(x):
      return x*i
  block_scope_emulation(i)
Vorherrschende Sprache
Batchfile
Sterne
29.8k
Forks
5.9k
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus realpython/python-guide

Alle Issues in realpython/python-guide

Ähnliche Issues

Weitere Issues zu Documentation

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.