Hvordan du bruker type hint i python

Hvordan du bruker type hint i python
Denne artikkelen vil dekke en guide for å bruke "Type Hints" i Python -programmer. Type hint brukes til å indikere objekttyper på et programmeringsspråk. De oppgir også eksplisitt hvilken type verdier som returneres av funksjoner og klasser. Denne mekanismen og kodingsstilen kalles noen ganger "statisk typing" eller "Type sjekk" i programmeringsterminologi. Noen programmeringsspråk håndhever typen hint og uten dem kaster tolk eller kompilator feil.

Python er et dynamisk typisk språk og typen hint er ikke obligatoriske. Python -tolk identifiserer automatisk objekttyper under kodeutførelse, og den lar også objekter dynamisk endre sine typer i løpet av levetiden. Valgfrie typer hint ble imidlertid introdusert i Python 3.5, slik at programmerere kan bruke typen hint hvis de ønsker.

Vær oppmerksom på at i motsetning til andre programmeringsspråk, håndhever ikke Python -tolk i seg selv valgfri type hint, da det bare anser dem som hint. Du må bruke tredjepartsmoduler eller tekstredigerings -plugins for å håndheve streng type sjekk i Python.

Hvorfor bruke Type -hint?

Type hint eksplisitt angir objekttyper og de reduserer kode tvetydighet. De gjør det mye lettere å utlede logikk bak kodeuttalelser, spesielt når den samme kodebasen blir arbeidet med av flere medlemmer av et team. De er også nyttige når kodebaser er tilgjengelig etter lange intervaller som typer hint gjør det lettere å utlede underliggende logikk. Type hint kan gjøre det mye lettere å feilsøke kode når problemer og krasjer oppstår. Imidlertid øker de verbositet i kode, og noen utviklere liker kanskje ikke det, da det påvirker standard Python -syntaks som er mye renere. Bruk av type hint i Python -programmer kan også være et personlig valg basert på ens kodingsstil og mønstre. Som nevnt tidligere, selv når du bruker Type -hint, håndhever ikke Python -tolken dem, og du må kanskje installere en tredjepartsmodul for å aktivere streng type sjekk.

Grunnleggende syntaks og bruk

Følgende eksempel viser typen hint som brukes til et "int" -typeobjekt i Python:

def square (tall: int) -> int:
Returnummer * Nummer
trykk (firkant (5))

Den første uttalelsen definerer en funksjon som kalles "firkant". Det tar et obligatorisk argument kalt "nummer" og beregner kvadratet. Type hint for antall argument er definert som "int" ved å bruke ":" (kolon) symbol mens typen hint for returtype er igjen definert som "int" ved hjelp av et "->" (pil) symbol.

Uten typen hint, ville den samme funksjonen bli definert som følger:

def square (tall):
Returnummer * Nummer
trykk (firkant (5))

Du får følgende utdata etter å ha kjørt de to kodeprøvene som er nevnt ovenfor:

25
25

Hvis du bare vil tilordne et type hint til en variabel under erklæringen, bruk følgende syntaks:

var1: str = "streng"
var2: int = 5
var3: float = 6.0

Du kan tilordne type hint til variabler før “=” like tegn. Som forklart ovenfor, må objektnavn og type hint skilles med et ":" (kolon) symbol.

Python -tolk håndhever ikke typen hint. Så hvis du endrer type objekter til enhver annen tilfeldig type som er tilgjengelig i Python, vil du få samme resultat så lenge selve logikken ikke kaster en feil. Her er kodeeksempel:

Def Square (nummer: Float) -> Str:
Returnummer * Nummer
Resultat = kvadrat (5)
trykk (resultat)
Print (Type (Resultat))

Her er tallargumentet av "float" -type. Funksjonen “firkant” returnerer nå et “STR” -typeobjekt. Imidlertid blir begge disse typene ikke håndhevet, og du vil få "25" ettersom output og den returnerte verdien vil være av "int" -type. Etter å ha kjørt ovennevnte kodeprøve, bør du få følgende utdata:

25

Bruke type aliaser

For å definere type hint for komplekse objekter som inneholder flere typer eller tilpassede objekttyper, kan du bruke type aliaser. Følgende kodeprøve viser bruk av type aliaser:

IntegerList = liste [int]
Def Square (tall: Integerlist) -> Integerlist:
retur [n * n for n i tall]
Resultat = firkantet ([5, 6, 7])
trykk (resultat)

I den første uttalelsen er et nytt type alias kalt “Integerlist” definert ved å tilordne det en type. Typedefinisjonen kan være enkel eller kompleks som inneholder flere typer. Deretter brukes denne typen alias deretter i den firkantede funksjonen, og den blir tildelt hovedargumentet og returverdien. Square -funksjonen returnerer nå kvadratet på hvert nummer i en liste. Etter å ha kjørt ovennevnte kodeprøve, bør du få følgende utdata:

[25, 36, 49]

Bruker "hvilken som helst" type hint

"Hvilken som helst" -type kan brukes til å kommentere variabler, argumenter og returtyper med alle typer hint. Objekter med "hvilken som helst" type hint kan være en streng, et heltall, en flottør eller annen gyldig type i Python. Her er et eksempel:

fra å skrive importere noen
var1: any = "String"
var2: hvilken som helst = 5
var3: hvilken som helst = 6.0

Den første uttalelsen importerer "hvilken som helst" type fra "skriving" -modulen. Skrivemodulen gir støtte for type hint i Python -programmer, og du må importere visse typer fra den for å bruke dem. Neste, i stedet for å bruke STR, INT, FLOAT eller et hvilket som helst annet slikt hint, brukes "hvilken som helst" for å indikere at variabelen kan være av enhver type i løpet av sin levetid. Vær oppmerksom på at typen hint fremdeles ikke håndheves i Python uten å bruke noe tredjepartsbibliotek.

Bruker en tredjepartsmodul for å sjekke typen hint

MyPy er en av de mest brukte typekontrollmodulene som er tilgjengelige for Python. Du kan bruke den til å finne Type Hint -relaterte feil i Python -programmene dine. Du kan installere den i Ubuntu og andre Linux -distribusjoner fra PIP -pakkebehandleren. For å gjøre det, kjør en av disse kommandoene:

$ pip installer mypy
$ pip3 installer mypy

Når MyPy er installert i Linux -systemet ditt, kan du sjekke strenge problemer med typekontroll i et Python -program ved å utføre en kommando i følgende format:

$ mypy -program.py

Merk at MyPy bare er et verktøy for å sjekke streng kontroll. Det vil kjøre en rapport om Python -programmet ditt og vise at du sjekker feil. Imidlertid vil du fortsatt kunne kjøre Python -programmer normalt (med eller uten typer hint), og ingen typer hintrelaterte feil vil bli kastet under utførelse. Tenk på følgende kodeprøve:

def square (tall: int) -> int:
Returnummer * Nummer
Resultat = kvadrat (5)
trykk (resultat)

Denne kodeprøven er identisk med et av eksemplene som er forklart ovenfor. Forutsatt at den ligger i en "hoved.py ”-fil, du kan sjekke typen hint ved å bruke MyPy ved å kjøre følgende kommando:

$ mypy main.py

Etter å ha kjørt kommandoen ovenfor, bør du få følgende utdata:

Suksess: Ingen problemer funnet i 1 kildefil

Hvis du leverer et float -type objekt til den firkantede funksjonen samtalen i samme eksempel ovenfor, vil MyPy kaste en feil.

def square (tall: int) -> int:
Returnummer * Nummer
Resultat = kvadrat (5.0)
trykk (resultat)

Nå når du kjører filen ved å bruke “MyPy Main.PY ”-kommando, du vil få en feil som ligner på dette:

hoved-.PY: 26: Feil: Argument 1 til "Square" har inkompatibel type "float"; Forventet "int"
Fant 1 feil i 1 fil (sjekket 1 kildefil)

Dette er bare en feilrapport som viser deg Type Hint -feil. Hvis du utfører begge kodeprøver som er nevnt ovenfor uten MyPy, vil du få følgende utdata:

25
25.0

Dette dekker den mest grunnleggende og vanlige bruken av typen hint syntaks i Python. For ytterligere informasjon om type hint, avansert bruk og tilpassede typer, se offisiell Python -dokumentasjon tilgjengelig her.

Konklusjon

Type hint i Python gir en systematisk måte å knytte typen indikatorer til variabler, funksjoner og klasser. Mens Python i seg selv ikke håndhever typen hint, kan du bruke tredjepartsmoduler for å sjekke typen hint og bruke dem som en grunnleggende form for tester for å hevde tiltenkt oppførsel av Python -objekter i programmet ditt. Måten Python -programmeringsspråk er designet og dets kjernefilosofi, streng type som sjekk for type hint kan aldri implementeres i Standard Python Library.