First Steps With Python_Mutable & immutable objects


ზოგიერთი ობიექტი პითონში მაგალითად string-ები tuple-ები და number-ები არიან immutable(უცვლელნი), მათი შეცვლა ფუნქციაში/მეთოდში შექმნის ახალ ცვლადს და ფუნქციის გარეთ ცვლადები ხელუხლებელი დარჩება, ხოლო list-ისა და dictionary-ს შეცვლა არ შექმნის ახალ ცვლადს და შესაბამისად ცვლილება აისახება ფუნქციის გარეთ. ასეთ ტიპებს mutable(ცვალებადი) ობიექტები ჰქვიათ.

ლუქ ეთ ზის:
list=[123,456,789]
dic={"123":"abc","456":"def","789":"ghi"}
def change(a,b):
        a.remove(123)
        b.pop(“123”)

change(list,dic)
print list
print dic

და რა გამოჩნდება კონსოლში???
ეს!
{‘789’: ‘ghi’, ‘456’: ‘def’}
[456, 789]

ყველა ობიექტს პითონში აქვს თავისი უნიკალური ID თუმცა სხვა ობიექტსაც შეიძლება იგივე ID ჰქონდეს მაგრამ მაგ შემთხვევაში ცვლადები ერთი ტიპისა და ერთი მნიშვნელობის ხდება. ID-ზე შეიძლება იფიქრო როგორც reference-ებზე. აიდის ნახვა შეგიძლიათ ჩაშენებული(built-in) ფუნქციით: id(ობიექტი). მაგალითად
DiX=”123″
print id(DiX)
დააბრუნებს რაღაც რვაციფრიან რიცხვს(ჩემ შემთხვევაში: 11165984)

არსებობს statement: is რომელიც ამოწმებს მიღებულ ორ ობიქტს აქვს თუ არა ერთიდაიგივე ID მაგალითად:
DiX=”123″
dix=DiX#= ოპერატორი მნიშვნელობას და ტიპს გადასცემს რაც კმარა რომ ID დაემთხვეს
dix is DiX# დაბეჭდავს True-ს
print id(DiX),id(dix)
ზედა კოდში წერია ორი განსხვავებული ცვლადი DiX და dix განსხვავებული იმიტომ რომ პითონი case sensitive-ა, რაც ნიშნავს მგრძნობელობას დიდ და პატარა ასოებზე.

ასევე საინტერესო რამ mutable ობიექტებზე:თუ 1ზე მეტ mutable ობიექტს აქ ერთიდაიგივე ID მაშინ ერთ-ერთის ცვლილება გამოიწვევს დანარჩენების ცვლილებასაც. მაგალითად:

list=[123,456,789]
list_=list
list__=list
list__.reverse()

print list
print list_
print list__
დაიბეჭდება
[789, 456, 123]
[789, 456, 123]
[789, 456, 123]

შენიშვნა:
* Assignment(=) ოპერატორი უკვე ნიშნავს რომ ახალი ცვლადი იქმნება, ანუ რაც არ უნდა mutable იყოს ობიექტი თუ მისი სახელის ცვლადს მინიჭების ოპერატორით რამე მივანიჭეთ(არ აქვს მნიშვნელობა რა) ის უკვე ახალ ცვლადს შექმნის სხვა ID-ზე.მაგ.:
list=[1,2,3]
print id(list)
list=[1,2,3]
print id(list)

დამერწმუნეთ სხვადასხვა რაღაც დაიბეჭდება.

პ.ს. დიდი მადლობა გიორგის

Advertisements

0 Responses to “First Steps With Python_Mutable & immutable objects”



  1. კომენტარის დატოვება

კომენტარის დატოვება

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / შეცვლა )

Twitter picture

You are commenting using your Twitter account. Log Out / შეცვლა )

Facebook photo

You are commenting using your Facebook account. Log Out / შეცვლა )

Google+ photo

You are commenting using your Google+ account. Log Out / შეცვლა )

Connecting to %s




სტატისტიკა:

  • 26,748 hits

free counters

აბირჟავებენ


%d bloggers like this: