Ka kaq shumë gjëra të mrekullueshme që ndodhin nën kapuçin e Python. Le të hedhim një vështrim të shpejtë në njërën prej tyre.
Duke marrë parasysh copëzën e mëposhtme të kodit:
>>> x = 0 >>> y = 100 >>> z = 150 >>> print(x is 0) >>> print(y is 100) >>> print(z is 150)
Me siguri i keni marrë me mend rezultatet. Të gjitha operacionet e testit të anëtarësimit do të rezultojnë në shtypjen e E vërtetë në rreshta të rinj. Kjo ishte e lehtë. Le të shohim një shembull tjetër:
>>> x = 200 >>> y = 250 >>> z = 333 >>> print(x is 200) True >>> print(y is 250) True >>> print(z is 333) False
Prisni… Çfarë po ndodh? Pse z nuk është 333?
Përgjigja është efikasiteti i Python. Të gjithë numrat e plotë të Python zbatohen si objekte me numër të plotë "të gjatë" me madhësi arbitrare. Për të rritur shpejtësinë, Python ruan numrat në memorien e tij. Sa herë që krijoni një numër të ri në rangun [-5, 256] Python do t'ju kthejë vetëm treguesin tek objekti, pasi objekti tashmë ekziston në memorie.
Sipas "dokumentacionit" zyrtar të Python: "Zbatimi aktual i objektit PyLong FromLong mban një grup objektesh me numra të plotë për të gjithë numrat e plotë midis -5
dhe 256
, kur krijoni një int në atë diapazon, në fakt thjesht ktheheni një referencë për objektin ekzistues”.
>>> x = 255 >>> print (x is 255) True >>> y = 256 >>> print (y is 256) True >>> z = 257 >>> print(z is 257) False >>> print(z == 257) True
Siç e shihni, instantimi i një int nga diapazoni [-5, 256] do të krijojë një objekt të ri në memorie.
Sipas "dokumentacionit" të bibliotekës standarde të Python: "Operatorët is
dhe is not
testojnë për identitetin e një objekti: x is y
është e vërtetë nëse dhe vetëm nëse x dhe y janë i njëjti objekt. Identiteti i një objekti përcaktohet duke përdorur funksionin id()
. x is not y
jep vlerën e së vërtetës së kundërt."
x is y is equivalent to: id(x) == id(y) >>> x = 255 >>> y = 255 >>> id(x) 9310272 >>> id(y) 9310272 >>> x is y True
Fillova udhëtimin tim në Python 3 vjet më parë dhe nuk ndalova kurrë së zbuluari veçori dhe truke të reja. Bota e Python është me të vërtetë magjepsëse, nuk ndaloni së mësuari.
“Kjo është ajo që të mësuarit. Papritmas kupton diçka që ke kuptuar gjithë jetën, por në një mënyrë të re.” ― Doris Lessing