Python

Omskiftelig vs. Uforanderlige objekter i Python

Omskiftelig vs. Uforanderlige objekter i Python

Python siges at være det mest fantastiske sprog, da mange individer vælger det som deres første sprog til programmering på grund af dets elegance og enkelhed. Taknemmelighed for dets brede samfund, overskydende pakker og ensartet syntaks, erfarne fagfolk bruger også Python. Selvom der er en ting, der ser ud til at irritere både begyndere og nogle professionelle udviklere - objekter fra Python.

Omskiftelig vs. Uforanderlig

Omskiftelig enheder kan ændre deres tilstand eller stof at beskrive forskellen og uforanderlig enheder kan ikke ændre deres tilstand eller substans. Så når et objekt oprettes, en special objekt-id tildeles. Ved kørsel specificeres typen af ​​objekt, og det kan ikke opdateres senere. Indbyggede former som variablerne int, float, bool, str, tuple og Unicode er uforanderlige. Objekter som liste, sæt, byte-arrays og ordbog over indbyggede kategorier kan ændres.

Forstå ID og type funktion

Den integrerede id () metoden indeholder et objekts id som bare et heltal. Dette heltal henviser normalt til objektets lagringsposition. Det 'er'operatør relaterer identiteten af ​​to objekter til hinanden. Den integrerede funktion, type(), returnerer typen af ​​et objekt. Sammenlign to variabler 'x'og'y', der har samme værdi, ved hjælp af ligestillingsoperatør'x == y', vil det output Rigtigt. Bruger id () funktion, vi har sammenlignet hukommelsesadresser af begge variabler, vil den output Falsk fordi begge variabler er forskellige og ligger på forskellige hukommelsesplaceringer, selvom de værdier, de indeholder, er de samme.

Lav en anden variabel 'z'der peger på den identiske enhed, som'x'dirigerer til, ved hjælp af tildelingsoperatør'=''. Bruger 'er'operatør, vi har fundet ud af, at de begge peger på det samme objekt og har de samme hukommelsesadresser.

Uforanderlige variabeltyper

Lad os se på nogle uforanderlige variable typer.

Heltals datatype

Lad os definere en variabel 'x'have en værdi'10''. En indbygget id () metode bruges til at finde ud af placeringen af ​​'x'i hukommelsen og type() bruges til at identificere sin type. Når vi prøver at ændre værdien af ​​'x', det er ændret med succes, selvom hukommelsesadressen vender tilbage forskelligt. Det er fordi vi faktisk ikke har ændret værdien af ​​'x', men vi har oprettet et andet objekt med samme navn'x'og tildel det en anden værdi. Vi har bundet navnet 'x'til den nye værdi. Nu, når du ringer 'x'det udsender den nye værdi.

Strengdatatype

Samme for strengdatatypen, vi kan ikke ændre den eksisterende variabel men vi skal skab en ny med samme navn. Her har vi det defineret en strengvariabel 'x'og vil tilføje'w'til dets nulindekser. Det vil output TypeFejl, viser, at strengobjektet ikke understøtter opdatering.

Tuple datatype

Få et glimt af en tupletype variabel, vi har defineret en tuple med 4 værdier. Vi har brugt id () funktion for at sende sin adresse. Når vi vil ændre dens værdi ved 0 indekser, det giver TypeFejl den tuple understøtter ikke varetildeling eller opdatering.

Tværtimod kan du opdatering hele tuplen ved at definere den fra kradse. Nu, når du tjekker det, finder du en ny værdi og en ny adresse.

Flyt datatype

Vi har en float-type variabel 'x''. Bruger id () funktion, vi er nødt til at finde ud af dens adresse. Når vi vil ændre dens værdi ved indeks 1, det giver Type Fejl at float understøtter ikke ændring af varer.

Omvendt har vi opdateret flyde ved at definere det igen. Nu, når vi kalder det, finder vi en ny værdi og en ny adresse.

Variable variabeltyper

Nu skal vi se på nogle foranderlige variable typer.

Liste over datatype

Vi har defineret en liste som hedder 'x'og tilføj nogle værdier til det. Mens løb, det viser listeværdier. Når du opdatering listen ved at tildele nye værdier til indeks 0 og 2, det vil med succes gøre det.

Det ovenfor beskrevne eksempel er et simpelt og grundlæggende eksempel på modifikation. For at kontrollere mutabilitet til et andet niveau, lad os se på det samme eksempel med lille ændring. Vi har oprettet et nyt navn 'y'og bundet det til det samme listeobjekt. Da vi kontrollerede, om 'x' er det samme som 'y', det returnerer sandt. På den anden side begge 'x'og'yhar det samme hukommelse adresser.

Tilføj nu en ny værdi til a liste navn 'x' og kontroller den opdaterede output.

Nu, når du tjekker for listen navngiv y, den viser den samme liste, som den vises for 'x'. Det betyder, når vi opdaterer den samme objektliste, som har to forskellige navne 'x' og 'y'. Begge er ens og deler de samme hukommelsesadresser, selv efter ændringen.

Ordbog DataType

Da ordbøger er almindeligt anvendte variabler i Python, lad os se på ordbøgernes mutabilitet. Vi har defineret en ordbog med navnet 'diktere'med tre taster og deres værdier. Når vi udskriver det, viser det alt indholdet af det. Du kan udskrive hver ordbogsværdi separat samt bruge deres nøgler i stedet for indekser.

Vi vil gerne lave om den særlige værdi ved at opdatere nøgle 'Navn'. Den udsender den opdaterede ordbog. Ordbogstaster er uforanderlige.

Lad os definere en liste og tuple separat. Sørg for at tuple skal have en liste type værdi i den og en liste har en værdi af tupletype i det følgelig.

EN tuple har en liste på dens 0 indekser så når du skifter på 0 indekser af en tuple skal du nævne indeks på en liste, hvor du vil ændre. Ændring sker, fordi listen er uforanderlig.

Tværtimod kan listevariablen ikke opdateres, fordi den har en tuple0 indeks, hvilket er mutabelt.

Konklusion

Vi har set variationer i Python mellem mutable og immutable. Du skal gøre dit sind klart, at alt i Python kaldes et objekt. Forskellen mellem objekter, der kan ændres, vs. uforanderlig.

5 bedste arkadespil til Linux
I dag er computere seriøse maskiner, der bruges til spil. Hvis du ikke kan få den nye høje score, ved du hvad jeg mener. I dette indlæg vil du kende n...
Kamp om Wesnoth 1.13.6 Udvikling frigivet
Kamp om Wesnoth 1.13.6 udgivet i sidste måned, er den sjette udviklingsudgivelse i 1.13.x-serien, og den leverer en række forbedringer, især til bruge...
Sådan installeres League Of Legends på Ubuntu 14.04
Hvis du er fan af League of Legends, er dette en mulighed for dig at prøvekøre League of Legends. Bemærk, at LOL understøttes på PlayOnLinux, hvis du ...