Python

Muutuv vs. Muutumatud objektid Pythonis

Muutuv vs. Muutumatud objektid Pythonis

Väidetavalt on Python kõige hämmastavam keel, kuna paljud inimesed valivad selle oma elegantsuse ja lihtsuse tõttu programmeerimise esimeseks keeleks. Tänu oma laiale kogukonnale, pakettide liigsusele ja järjekindlale süntaksile kasutavad kogenud spetsialistid ka Pythoni. Kuigi üks asi näib häirivat nii algajaid kui ka mõnda professionaalset arendajat - Pythoni objektid.

Muutuv vs. Muutumatu

Muutuv üksused saavad muuta nende olek või aine kirjeldada erinevust ja muutumatu üksused ei saa oma olekut ega sisu muuta. Nii et kui objekt luuakse, siis eriline objekti ID on eraldatud. Käitusajal määratakse objekti tüüp ja seda ei saa hiljem värskendada. Sisseehitatud vormid nagu muutujad int, float, bool, str, tuple ja Unicode on muutumatud. Sellised objektid nagu loend, komplekt, baitide massiivid ja sisseehitatud kategooriate sõnastik on muudetavad.

Saage aru ID-st ja tüübist

Integreeritud id () meetod sisaldab objekti ID lihtsalt täisarvuna. See täisarv viitab tavaliselt objekti salvestusasendile. "on'seob operaator kahe objekti identiteedid omavahel. Integreeritud funktsioon, tüüp (), tagastab objekti tüübi. Kahe muutuja võrdlemine 'x"ja"y", millel on sama väärtus, kasutades võrdõiguslikkuse operaatorit"x == y', väljastab see Tõsi. Kasutades funktsioon id (), oleme võrrelnud mäluaadressid Mõlemast muutujast väljastab see Vale kuna mõlemad muutujad on erinevad ja asuvad erinevates mälupaikades, ehkki neis sisalduvad väärtused on samad.

Tee veel üks muutuja 'z"mis osutab samale üksusele, mis"x"suunab ülesandeoperaatorit kasutades"=". 'on'operaator, oleme leidnud, et mõlemad osutavad samale objektile ja neil on samad mäluaadressid.

Muutumatud muutuja tüübid

Vaatame mõnda muutumatut muutujatüüpi.

Tervikandmete tüüp

Määratleme muutuja "x"millel on väärtus"10". Sisseehitatud id () meetod kasutatakse asukoha tuvastamiseksx'mällu ja tüüp () kasutatakse selle tüübi tuvastamiseks. Kui proovime muuta väärtustx', see on edukalt muudetud, kuigi mäluaadress naaseb teisiti. Selle põhjuseks on asjaolu, et me pole väärtust tegelikult muutnudx', kuid oleme loonud teise sama nimega objekti'xja määrake sellele erinev väärtus. Oleme sidunud nime 'x"uuele väärtusele. Nüüd, kui helistatex'see väljastab uue väärtuse.

String DataType

Sama stringi andmetüübi puhul ei saa me olemasolevat muuta muutuv aga peame luua uus sama nimega. Siin meil on määratletud stringimuutuja 'x"ja soovite lisada"w'nullindeksini. See väljastab TypeError, mis näitab, et stringi objekt ei toeta värskendamist.

Tuple DataType

Heitke pilk ühte tüüpi tüübist muutuv, oleme määranud a kahekordne 4 väärtusega. Oleme kasutanud funktsioon id () aadressi väljastamiseks. Kui me tahame selle väärtust muuta 0 indeksit, see annab TypeError see rühm ei toeta üksuse määramist ega värskendamist.

Vastupidi, saate värskendus kogu tuppi, määratledes selle alates kriimustada. Nüüd, kui seda kontrollite, leiate uue väärtuse ja uue aadressi.

Ujuk DataType

Meil on ujuki tüüpi muutuja "x". Kasutades funktsioon id (), peame välja selgitama selle aadressi. Kui me tahame selle väärtust muuta indeks 1, see annab TypeError see ujuk ei toeta üksuse muutmist.

Seevastu oleme värskendanud ujuk uuesti määratledes. Nüüd, kui me seda nimetame, leiame uue väärtuse ja uue aadressi.

Muutuvad muutuja tüübid

Nüüd vaatame mõningaid muutuvaid muutuja tüüpe.

Loetlege DataType

Oleme määranud a nimekirja nimegax'ja lisage sellele mõned väärtused. Kuigi jooksma, see kuvab loendi väärtused. Kui sa värskendus loendi, määrates domeenile uued väärtused indeks 0 ja 2, ta teeb seda edukalt.

Eespool kirjeldatud näide on lihtne ja põhiline näide modifitseerimisest. Muutuvuse kontrollimiseks erineval tasemel vaatleme sama näidet väheste muudatustega. Oleme loonud uue nime "yja sidus selle sama loendiobjektiga. Kui me kontrollisime, kasx' on sama nagu 'y', tagastab selle True. Teiselt poolt, mõlemadx"ja"y"on sama mälu aadressid.

Lisage nüüd a-le uus väärtus loendi nimi 'x' ja kontrollige värskendatud väljundit.

Nüüd, kui loendit kontrollite nimi 'y', see kuvab sama loendi, mis kuvatakse 'x' puhul. See tähendab, et kui värskendame sama objektide loendit, millel on kaks erinevat nime "x" ja "y". Mõlemad on samad ja jagavad samu mäluaadresse ka pärast modifitseerimist.

Sõnastik DataType

Kuna Pythonis on sõnastikud tavaliselt kasutatavad muutujad, vaatame sõnaraamatute muutlikkust. Oleme määranud sõnaraamatu nimega 'dikteerima'kolme võtme ja nende väärtustega. Kui me selle välja printime, kuvatakse sellel kogu sisu. Iga sõnastiku väärtuse saate printida eraldi ja kasutada ka neid võtmeid indeksite asemel.

Me tahame muutus konkreetse väärtuse värskendades võti 'nimi'. See väljastab uuendatud sõnaraamatu. Sõnastiku klahvid on muutumatud.

Määratleme a nimekirja ja kahekordne eraldi. Veendu, et kahekordne peab olema loendi tüübi väärtus selles ja loendis on a kahekordse tüübi väärtus selles järelikult.

A kahekordne on nimekirja selle peal 0 indeksit nii et kui vahetate 0 indeksit kahest, peate mainima indeks loendist, mida soovite muuta. Muudatus toimub seetõttu, et loend on muutumatu.

Vastupidi, loendi muutujat ei saa uuendada, kuna sellel on kahekordne peal 0 indeks, mis on muutuv.

Järeldus

Oleme Pythonis näinud variatsioone muutuvate ja muutumatute vahel. Peate oma meele selgeks tegema, et kõike Pythonis nimetatakse objektiks. Eelkõige eristatakse objekte, mis on muudetavad vs. muutumatu.

OpenTTD vs Simutrans
Oma transpordisimulatsiooni loomine võib olla lõbus, lõõgastav ja äärmiselt köitev. Sellepärast peate endale meelepärase leidmiseks kindlasti proovima...
OpenTTD õpetus
OpenTTD on seal üks populaarsemaid ärisimulatsioonimänge. Selles mängus peate looma suurepärase transpordiettevõtte. Alustate siiski alguses umbes 190...
SuperTuxKart Linuxile
SuperTuxKart on suurepärane pealkiri, mis on loodud selleks, et tuua teie Linuxi süsteemis tasuta Mario Karti kogemus. See on päris keeruline ja lõbus...