Kontroll av om en variabel er et heltall eller ikke
Hvordan sjekker jeg om en variabel er et heltall?
826
3
Hvordan sjekker jeg om en variabel er et heltall?
Hvis du trenger å gjøre dette, gjør du
med mindre du er i Python 2.x, i hvilket tilfelle du vil ha
Ikke bruk
type
. Det er nesten aldri det riktige svaret i Python, siden det blokkerer all fleksibiliteten til polymorfisme. For eksempel, hvis du underklasseint
, bør den nye klassen registreres som enint
, noetype
ikke vil gjøre:Dette følger Python&# 39s sterke polymorfisme: du bør tillate ethvert objekt som oppfører seg som en
int
, i stedet for å kreve at det skal være en.MEN
Den klassiske Python-mentaliteten er imidlertid at det er lettere å be om tilgivelse enn tillatelse . Med andre ord, ikke sjekk om
x
er et heltall; anta at det er det og fang unntaksresultatene hvis det ikke er det:Denne mentaliteten blir sakte overtatt av bruken av abstrakte basisklasser, som lar deg registrere nøyaktig hvilke egenskaper objektet ditt skal ha (legge til? multiplisere? doble?) ved å få det til å arve fra en spesialkonstruert klasse. Det ville være den beste løsningen, siden det vil tillate nøyaktig de objektene med de nødvendige og tilstrekkelige attributtene, men du må lese dokumentasjonen om hvordan du bruker det.
Se her for mer informasjon.
Merk at dette ikke hjelper hvis du leter etter
int
-lignende attributter. I dette tilfellet kan det også være lurt å se etterlong
:Jeg har sett sjekker av denne typen mot en array / indekstype i Python-kilden, men jeg tror ikke det er synlig utenfor C.
Token SO-svar: Er du sikker på at du skal sjekke typen? Enten ikke send en type du ikke kan håndtere, eller ikke prøv å overliste potensielle gjenbrukere av koden din, de kan ha en god grunn til ikke å sende en int til funksjonen din.
Fant et relatert spørsmål her på SO selv.
Python-utviklere foretrekker å ikke sjekke typer, men gjøre en typespesifikk operasjon og fange et
TypeError
unntak. Men hvis du ikke kjenner typen, har du følgende.