Middle
143
Хеш-функциялар мен өзгермелі/өзгермейтін объектілер арасындағы байланыс қандай?
AI-дан жауап
sobes.tech AI
Python-дағы объектілер өзгермелі (mutable) және өзгермейтін (immutable) болып бөлінеді. Хеш-функциялармен байланысы — тек өзгермейтін объектілер ғана хештелетін (hashable) болып табылады және, демек, оларды сөздік кілттері немесе жиынтық элементтері ретінде қолдануға болады.
- Өзгермейтін объектілер: жол (
str), кортеж (tuple), сан (int,float,bool),NoneTypeжәне т.б. Олардың мәні құрылағаннан кейін өзгертілмейді. Python мұндай объектілер үшін хеш мәнін бір рет есептейді. - Өзгермелі объектілер: тізім (
list), сөздік (dict), жиын (set) және т.б. Олардың мәні құрылағаннан кейін өзгертілуі мүмкін. Егер өзгермелі объектілер хештелетін болса, олардың хеш мәні сөздікке немесе жиынға қосылғаннан кейін өзгеруі мүмкін еді, бұл хеш-кестелер негізінде құрылған деректер құрылымдарының жұмысын бұзар еді.
Байланыс сөздіктер мен жиындар қолданылғанда байқалады:
- Сөздіктер (dictionaries): Хеш-кестені пайдаланып, кілт бойынша мәндерге жылдам қол жеткізуді қамтамасыз етеді. Сөздік кілттері хештелетін болуы керек.
- Жиындар (sets): Сондай-ақ, бірегей элементтерді сақтау үшін хеш-кестені пайдаланады. Жиын элементтері хештелетін болуы керек.
# Бұл жұмыс істейді, себебі кортеж — өзгермейтін объект
my_dict = {(1, 2): 'hello'}
my_set = {(1, 2)}
# Бұл TypeError қателігін тудырады, себебі тізім — өзгермелі объект
# my_dict = {[1, 2]: 'hello'}
# my_set = {[1, 2]}
# TypeError: unhashable type: 'list'