Allow Return Statements with Values in Asynchronous Generators
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 77.2k
- Forks
- 35.9k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
Feature or enhancement
Proposal:
async def gen():
yield 1
yield 2
return 3
async def runner():
g = gen()
while True:
try:
a = await g.__anext__()
print("yielded", a)
except StopAsyncIteration as e:
print("returned", e.value)
break
asyncio.run(runner())
# yielded 1
# yielded 2
# returned 3
The proposal adds optional return values to async generators.
This feature should be implemented to achieve syntactic and functional parity with synchronous generators.
Today:
def gen():
yield 1
yield 2
return 3
async def agen():
yield 1
yield 2
return 3 # Syntax error
Proposal:
def gen():
yield 1
yield 2
return 3
async def agen():
yield 1
yield 2
return 3
It can be implemented trivially in CPython as a nonbreaking change.
Has this already been discussed elsewhere?
I have already discussed this feature proposal on Discourse
Links to previous discussion of this feature:
https://discuss.python.org/t/allow-return-statements-with-values-in-asynchronous-generators/66886
Linked PRs
- gh-125401
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginne damit, die verlinkte Discourse-Diskussion und den verlinkten PR gh-125401 zu lesen, um die vorgeschlagenen Änderungen an Sprache und Laufzeit zu verstehen. Verwende das Async-Generator-Beispiel im Issue als Verhaltensreferenz; fertig ist die Arbeit, wenn ein Async-Generator einen Wert zurückgeben kann und dieser Wert über StopAsyncIteration beobachtbar ist, ohne bestehendes Verhalten zu beeinträchtigen.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- compilers
- Issue-Typ
- Feature
- Schwierigkeit
- 5/5
- Geschätzter Aufwand
- Über eine Woche
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 20/100