I denne artikel vil vi studere, hvordan man reparerer 'int'-objekt, der ikke kan abonneres i Python. Men før det, lad os forstå, hvorfor det opstår, og hvad det betyder.
Hvad er 'Int' Object Is Not Subscriptable Error?
Fejlen 'int'-objekt kan ikke abonneres opstår, når du forsøger at bruge indeksering eller udsnit på en heltal , en datatype, der ikke understøtter disse handlinger.
Som vi kender heltal i Python er en datatype der repræsenterer et helt tal. I modsætning til lister eller ordbøger indeholder heltal ikke en sekvens af elementer og understøtter derfor ikke indeksering eller udsnit.
For eksempel, hvis x = 42 (et heltal), og vi forsøger at gøre noget som x[0], er det et forsøg på at få adgang til det første element af x, som om x var en liste eller a tupel . Da heltal ikke indeholder en samling af elementer, er denne operation ikke gyldig, og du får en TypeError: 'int'-objekt kan ikke abonneres.
Eksempel
Python3
# Example causing 'int' object is not subscriptable error> x>=> 42> # Attempting to use subscript notation on an integer> print>(x[>0>])> |
>
>
Produktion:
Hangup (SIGHUP) Traceback (most recent call last): File 'Solution.py', line 4, in print(number[0]) TypeError: 'int' object is not subscriptable>
Hvorfor opstår 'Int'-objekt ikke abonnent-fejl?
'Int'-objektet kan ikke abonneres fejl i Python opstår på grund af specifikke karakteristika for heltals-(int)-objekter. Her er grundene til, at denne fejl opstår:
- Heltals uforanderlighed
- Funktion Return Type Mismatch
- Ingen iterabel struktur
Heltals uforanderlighed
Som vi ved, at heltal i Python er uforanderlige, hvilket betyder, at deres værdier ikke kan ændres efter oprettelse og abonnent- eller indekseringsoperationer kan anvendes på foranderlige sekvenser (f.eks. lister, strenge ), hvor elementer kan tilgås eller ændres ved hjælp af indekser.
udskæring af java
Da heltal ikke er sekvenser, der kan ændres, er forsøg på at bruge firkantede parenteser til at abonnere resultater i 'Int'-objektet ikke en abonnent fejl.
Python3
# Example triggering 'Int' object is not subscriptable error> num>=> 42> value>=> num[>0>]># Error: 'Int' object is not subscriptable> |
>
>
Produktion:
Hangup (SIGHUP) Traceback (most recent call last): File 'Solution.py', line 3, in value = num[0] # Error: 'Int' object is not subscriptable TypeError: 'int' object is not subscriptable>
Funktion Return Type Mismatch
I denne funktion forventes det at returnere en liste eller tuple, når betingelsen er Falsk, som angivet af den anden gren.
Men i den anden gren returnerer funktionen et heltal i stedet for en liste eller tupel, hvilket resulterer i fejlen 'Int' Object Is Not Subscriptable
Python3
def> get_data(condition):> >'''> >This function is expected to return a list or tuple,> >but under certain conditions, it returns an integer.> >'''> >if> condition:> >return> [>1>,>2>,>3>]># Returns a list> >else>:> >return> 42> # Returns an integer> > # Function call with a condition that leads to an integer being returned> result>=> get_data(>False>)> > # Attempting to index the result, which is an integer in this case> first_element>=> result[>0>]> |
>
>
java samlinger java
Produktion:
Hangup (SIGHUP) Traceback (most recent call last): File 'Solution.py', line 15, in first_element = result[0] TypeError: 'int' object is not subscriptable>
Ingen iterabel struktur
Som vi ved mangler heltal den iterable struktur, der kræves for at abonnere. Iterable objekter, såsom lister eller strenge, har en veldefineret sekvens af elementer, som kan tilgås ved hjælp af indekser.
Forsøg på at bruge firkantede parenteser på et heltal indebærer, at det behandles, som om det har iterable egenskaber, hvilket resulterer i, at 'Int'-objektet ikke er en abonnentfejl.
Python3
# Example demonstrating misinterpretation of syntax> integer_value>=> 123> value>=> integer_value[>0>]> |
>
>
Produktion:
Hangup (SIGHUP) Traceback (most recent call last): File 'Solution.py', line 3, in value = integer_value[0] # Error: 'Int' object is not subscriptable TypeError: 'int' object is not subscriptable>
Løs 'Int'-objekt kan ikke abonneres i Python
- Brug strenge eller lister i stedet for heltal
- Tjek variabeltyper
- Gennemgå kodelogik:
Lad os studere dem i detaljer
Brug strenge eller lister i stedet for heltal
I Python er sænket notation gældende for strenge og lister. Så vi kan konvertere heltal til en streng eller liste, før vi bruger sænket notation.
Python3
# Converting integer to string and using subscript notation> number>=> 42> number_str>=> str>(number)> print>(number_str[>0>])> |
>
>Produktion
4>
Tjek variabeltyper
Vi skal sikre os, at den variabel, vi bruger, er af den forventede type, vi ønsker, at den skal være. Hvis det formodes at være en sekvens (streng eller liste), skal du sørge for, at den ikke ved en fejl er tildelt en heltalsværdi.
Python3
# Checking variable type before using subscript notation> number>=> 42> if> isinstance>(number, (>str>,>list>)):> >print>(number[>0>])> else>:> >print>(> >f>'Error: Variable type '{type(number).__name__}' is not subscriptable.'>)> |
>
>Produktion
Error: Variable type 'int' is not subscriptable.>
Gennemgå kodelogik
Undersøg din kodelogik for at afgøre, om abonnentnotation virkelig er nødvendig. Hvis ikke, revidér koden for at undgå at abonnere på heltal.
Python3
java liste node
# Reviewing code logic to avoid subscripting integers> number>=> 42> number_str>=> str>(number)> print>(number_str[>0>])> |
>
>Produktion
4>
Konklusion
Ud fra ovenstående oplysninger kan vi sige Typefejl : 'int'-objekt kan ikke abonneres fejl i Python sker typisk på grund af en typemismatch, hvor et heltal fejlagtigt behandles som et abonnent objekt som en liste eller tuple. Så for at forhindre dette, er det afgørende at kontrollere datatyper konsekvent, især når man har at gøre med dynamiske eller komplekse datastrukturer.