Мазмунга өтүү

Өзгөрүлмөлүүлүк, көчүрүү жана объект модели

Сабактын башталышы

Өзгөрүлмөлүүлүк, көчүрүү жана объект модели

Аттар, объекттер, теңдештик жана эмне үчүн көчүрүү эч качан көрүнгөндөй жөнөкөй эмес

Негизги идея: Python-до өзгөрмө маанини сактаган куту эмес; ал эстутумдун бир жеринде жашаган объектке байланган ат. Ыйгаруу аттарды байлайт, ал эч качан объекттерди көчүрбөйт. Ушул бир гана эрежени өзүңүзгө сиңиргенде, алиасинг каталары, is менен == айырмасы, өзгөрүлмө демейки аргумент тузагы жана үстүртөн менен терең көчүрүүнүн айырмасы — баары күтүлбөгөн нерсе болбой калып, бир модельдин алдын ала болжолдонуучу натыйжаларына айланат.
Бул теманын аягында сиз төмөнкүлөрдү жасай аласыз:
  • ат, объект жана маани ортосундагы айырманы түшүндүрүү;
  • алиасинг жөнүндө так ой жүгүртүү жана эки ат бир объектти качан бөлүшөрүн билүү;
  • is (теңдештик) менен == (барабардык) ортосунан туура тандоо;
  • өзгөрүлмө демейки аргумент тузагын таануу жана оңдоо;
  • ыйгаруу, copy.copy жана copy.deepcopy арасынан туура куралды тандоо.

1. Аттар объекттерге байланат, аларды сактабайт

Python-догу ар бир маани — үч атрибуту бар объект: теңдештик (анын дареги, аны id() көрсөтөт), тип жана ал алып жүргөн маалымат. Өзгөрмө — бул кайсы бир аталыш мейкиндигиндеги ошол объекттердин бирине шилтеме кылган ат. Сиз b = a деп жазганда, Python a көрсөткөн объектти кайталабайт; ал b дал ошол эле объектке шилтеме кылганын камсыз кылат. Эми эки ат тең бир объекттин үстүндө турат.

a = [1, 2, 3]
b = a                 # b ОШОЛ ЭЛЕ тизме объектине шилтейт, көчүрмөгө эмес
b.append(4)
print(a)              # [1, 2, 3, 4]  -- a "өзгөрдү", анткени тизме бирөө
print(id(a) == id(b)) # True  -- бирдей теңдештик

Бул тизмелер үчүн өзгөчө учур эмес. Ар бир ыйгаруу ушундай иштейт — бүтүн сандар, саптар, функциялар жана экземплярлар үчүн бирдей. Башка тилдерде сезген «маани-типтер» менен «шилтеме-типтер» ортосундагы айырма бул жерде жок: баары объектке шилтеме. Айырма — объектти түзгөндөн кийин өзгөртүүгө болобу деген гана нерседе.

Бул сабакты YourAIZone платформасында улантыңыз

Толук сабакта — толук түшүндүрмө, чыгарылган мисалдар, көп кездешкен каталар, заматта текшерилүүчү тесттер жана ЖИ-репетитор. Конок катары дароо баштаңыз же прогрессти сактоо үчүн аккаунт түзүңүз.

Толук сабакта

  • Толук түшүндүрмө
  • Чыгарылган мисалдар
  • Көп кездешкен каталар жана алардан кантип качуу керек
  • Тест суроолору: 15
  • Тема боюнча суроолорго жооп берген ЖИ-репетитор
  • Окуучу, ата-эне жана мугалим үчүн прогрессти көзөмөлдөө