Local type inference of numeric variables
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 20.6k
- Forks
- 3.3k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
I have a very simple example program that produces surprising and (I think...) wrong behavior:
foo = 0
foo = 1.0
Running mypy against this file yields
test.py:3: error: Incompatible types in assignment (expression has type "float", variable has type "int")
But foo could(/should) be inferred as a float in this environment. I draw this conclusion from PEP-484
when an argument is annotated as having type float, an argument of type int is acceptable
(although this is not about function arguments per se).
I know that some improvements have been recently been made to type inference in 0.770 to use information from second (or subsequent) assignments, rather than just the first assignment. So maybe a widening from int to float could be implemented in the same way...?
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
Reproduziere das Verhalten mit dem Beispiel test.py unter Verwendung von mypy und untersuche anschließend die für Version 0.770 referenzierten lokalen Änderungen an der Typinferenz sowie die relevante PEP-484-Richtlinie. Die Aufgabe ist abgeschlossen, wenn festgestellt wurde, ob eine Variable, der ein int zugewiesen wurde, später zu float erweitert werden darf, und wenn das daraus resultierende Zuweisungsverhalten durch Tests abgedeckt ist.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- compilers
- Issue-Typ
- Feature
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 35/100