Változtatható és megváltoztathatatlan objektumok Python {EXAMPLES}
Mi az a változó objektum?
Mutatható be Python úgy definiálható, mint az a tárgy, amely változhat, vagy valami megváltoztatható természetűnek tekinthető. A változtatható érték módosításának vagy szerkesztésének képességét jelenti.
Változó objektumok be Python lehetővé teszi a programozóknak, hogy olyan objektumokkal rendelkezzenek, amelyek megváltoztathatják értékeiket. Általában adatgyűjtemény tárolására szolgálnak. Mutálódott valaminek tekinthető, és az objektumon belüli belső állapot megváltozott.
Mik azok a megváltoztathatatlan objektumok?
Megváltozhatatlan tárgyak benne Python olyan objektumként definiálhatók, amelyek értékei és attribútumai idővel nem változnak.
Ezek az objektumok létrehozásuk és inicializálásuk után állandóvá válnak, és a felhasznált adatszerkezetek kritikus részét képezik Python.
Python számokban használatos, sorok, karakterláncok, rögzített készletek és felhasználó által definiált osztályok, néhány kivétellel. Nem változhatnak, és értékeik, és ez állandó marad, miután inicializálják őket, és ezért megváltoztathatatlannak nevezik őket.
In Python, minden egy tárgy
A Python programozási nyelvben minden egy listákból, egész számokból és függvényekből álló objektumnak tekinthető. Ez a funkció összehasonlítható más, objektumokat támogató programozási nyelvekkel.
Ez a funkció ellenőrizhető a Python tolmács az alábbiak szerint: –
Python kód:
print("The following instance is an object:",isinstance(3,object))
print("Another instance for object", isinstance(True, object))
def my_func():
return "guru99"
print("This is a function example and regarded as an object in Python:", isinstance(my_func, object))
output:
A following instance is an object: True Another instance for object True This is a function example and regarded as an object in Python: True
Továbbá, Python egy id nevű beépített függvényt biztosít, amely visszaadja az objektum címét a memóriájában Python programozási nyelv.
Python kód:
z=200
id(z)
print("The id of object is", id(z))
output:
the id of object is 9795360
A fenti kódban az id(obj) szintaxisú id függvény adja meg az obj in címét Python memória. Itt van egy z nevű objektum, amelynek hozzárendelése 200. A z objektum ezután id(z) néven átkerül az id függvénybe, és a Python az objektum címét 9795360-ként adja meg.
Változó objektumok be Python
Egy változtatható objektumban az objektum értéke egy idő alatt változik.
Ebben a példában a változó objektumokat magyaráztuk el Python, és ez listákat használ a módosítható objektumok alkalmazásaként, az alábbiak szerint: –
Python Kód:
mut_list = [1, 2, 3]
print("The list in Python",mut_list)
mut_list[0] = 'Gurru99'
mut_list
print("The list in Python after changing value",mut_list)
output:
The list in Python [1, 2, 3] The list in Python after changing value ['Gurru99', 2, 3]
Amint a fenti példában láthatjuk, a változó lista in Python értéke 1,2,3 volt. A változtatható lista első eleme 1-ről Guru99-re változik, és nem hoz létre új objektumot új érték inicializálásakor.
Itt az id metódussal tudjuk használni. Az alábbiakban bemutatjuk az id metódus használatát változtatható objektumokhoz, az alábbiak szerint: –
Python Kód:
mut_list = [1, 2, 3]
print("The list in Python",mut_list)
print("the id of the list is ",id(mut_list))
mut_list[0] = 'Gurru99'
mut_list
print("The mut list in Python after changing value",mut_list)
print("the id of the list is post change in value",id(mut_list))
teljesítmény
The list in Python [1, 2, 3] the id of the list is 139931568729600 The list in Python after changing value ['Gurru99', 2, 3] the id of the list is post change in value 139931568729600
A következő ábra a változó objektumot mutatja be Python az alábbiak szerint: -
Megváltozhatatlan tárgyak benne Python
Megváltozhatatlan tárgyak benne Python olyan objektumok, amelyekben a példányok nem változnak az időszak során. Egy adott típusú megváltoztathatatlan példányok létrehozása után nem változnak, és ez az id metódussal ellenőrizhető. Python.
Vegyünk egy példát az integer típusú objektumokra Python amely bemutatja a megváltoztathatatlan objektumok fogalmát Python az alábbiak szerint: -
Python Kód:
a=244
print("the number before change is",a)
print("the id of number before change is",id(a))
a=344
print("the number after change is",a)
print("the id of number after change is",id(a))
teljesítmény
the number before a change is 244 the id of number before change is 9796768 the number before change is 344 the id of number before change is 140032307887024
Fentebb látható, hogy változás van az „a”-ban. Vizsgáljuk meg, hogyan működik a mechanizmus:
- Nem változik az objektum értéke, ha az „a” 344-gyel inicializálódik.
- Ehelyett egy új objektum jön létre, amelyet „a” határol.
- A másik 244-es objektum már nem lesz elérhető.
- A fenti példa egy egész objektumot használt.
Az a=244 értéknél egy új objektum jön létre, és az „a”-ra hivatkozik, az alábbiak szerint: –
Postázás az a=344 használatával, van egy új objektum, amelyre „a” hivatkozik. A következő diagram ugyanezt mutatja: -
Ezért minden alkalommal, amikor új értéket rendelnek az int típus nevéhez, megváltozik a név egy másik objektumhoz való hozzárendelése. Ugyanez az elv igazodik a sorokhoz, húrok, float és Boolean, ezért megváltoztathatatlannak nevezik.
A szótár kulcsainak következményei Python
A szótárak olyan rendezett gyűjteményekként határozhatók meg, amelyek kulcsformátumban tárolják az adatokat, és nem engedélyezik a duplikációt. A szótárak egy kulcsot tartalmaznak, amelyekhez hozzá van igazítva a megfelelő értékpár. Típusukban változtathatóak, tartalmuk inicializálásuk és létrehozásuk után is változtatható.
A kulcs minden pillanatban egy adott elemre mutat. A szótárak kulcsai megváltoztathatatlanok.
Vegyünk egy hipotetikus forgatókönyvet az alábbiak szerint: -
a = [4, 6]
b = [5, 6, 7]
my_dict = {a: 'x', b: 'y'}
print(my_dict)
Kimenet: – A fenti Python kód nem ad semmilyen kimenetet, helyette nem kivonatolt típusú típushibát generál. Ez egy hipotetikus helyzet, és nem használják a Python fordítóprogram.
Itt, a definíciója [4,6], a szótárban pedig x. Itt, b definíciója [5,6,7], a szótárban pedig y.
- Az 'a' kulcs értéke [4,6], és tovább inicializálódik x-re.
- A 'b' kulcs értéke [5,6,7], amely a szótárban tovább inicializálódik 'y'-ra.
- Most tegyük fel, hogy a 'a ' 5-tel és 7-tel van hozzáfűzve, amelyek a szótár kulcsa.
- Aztán a szótárt mutálták, és mindkettőt megadná 'x' és a „y” a fenti szótár értékeiként.
Tekintsük a következő forgatókönyvet a fentiek szerint: –
a = [5, 6,7]
b = [5, 6, 7]
my_dict = {a: 'x', b: 'y'}
print(my_dict)
Ezért programozási nyelvként Python megváltoztathatatlanná teszi a szótár kulcsait, a szótárak pedig megváltoztathatatlan adattípusok.
Kivételek a változhatatlanságban
Azonban, Python kivételeket biztosít a megváltoztathatatlanság alól, ilyen kivételek figyelhetők meg a tuple objektumtípusnál. A tuple változtatható és megváltoztathatatlan objektumtípusok kombinációja lehet. Vegyünk egy példát a megváltoztathatatlanság kivételeinek magyarázatára, az alábbiak szerint: –
Python Kód:
tupexample=([1,1],'guru99')
print("the tuple before change",tupexample)
print("the id of tuple before change",id(tupexample))
tupexample=([2,2],'guru99')
print("the tuple after change",tupexample)
print("the id of tuple after change",id(tupexample))
output:
the tuple before change ([1, 1], 'guru99') the id of tuple before change 140649480694656 the tuple after change ([2, 2], 'guru99') the id of tuple after change 140649480694592
A fenti kódban látható, hogy az első elem, ami egy lista, változtatható, míg a tuple változtathatatlan. A sor értéke nem változtatható meg, de a soron belüli lista tartalma megváltoztathatja az értékét.
Ezért ez kivételt jelent, hogy a megváltoztathatatlan objektumok nem változtatják meg értéküket, de az összetevők értéke megváltoztatja értéküket.
Változó vs. megváltoztathatatlan objektumok
Íme a fő különbségek a változtatható és megváltoztathatatlan objektumok között:
| Változó objektum | Megváltozhatatlan tárgy |
|---|---|
| Az objektum állapota a létrehozás után módosítható | Az objektum állapota a létrehozás után nem módosítható |
| A változtatható objektumok természetüknél fogva nem tekinthetők szálbiztosnak. | A megváltoztathatatlan tárgyakat természetüknél fogva szálbiztosnak tekintik. |
| A módosítható objektumok nem véglegesek, így a programozó folyamatosan változtathatja a módosítható objektumokat, és ugyanazokat az objektumokat használhatja. | Nagyon fontos, hogy az osztályokat véglegessé tegyük, amikor a megváltoztathatatlan objektum jön létre |
Python Megváltozhatatlan adattípusok
| Osztály | Magyarázat | Megváltoztathatatlan vagy sem |
|---|---|---|
| Boolean | Logikai érték | Változhatatlan |
| Int | Egész érték (a nagyság tetszőleges lehet) | Változhatatlan |
| Úszó | Lebegőpontos szám | Változhatatlan |
| Lista | Mutabilis természetű objektumok sorozata | Változékony |
| tuple | Megváltozhatatlan természetű tárgyak sorozata | Változhatatlan |
| str | Karakter /karakterlánc | Változhatatlan |
| Készlet | Különálló objektumok halmaza, amelyek rendezetlen jellegűek | Változékony |
| Frozenset | Állítsa be a változhatatlan természet osztályát | Változhatatlan |
| Dict | Szótár vagy asszociatív leképezés | Változékony |


