Sobes.tech
Middle

Чаро калидҳо дар луғатҳои Python бояд тағйирнопазир бошанд ва оё мумкин аст калидҳои тағйирёбанда истифода шаванд?

sobes.tech AI

Ҷавоб аз AI

Ключҳо дар луғати Python бояд ғайрифаъол бошанд, зеро луғат барои дастрасии зуд ба арзишҳо hashing-ро истифода мебарад. Агар калид тағйирёбанда бошад, hash-и он пас аз ворид кардан ба луғат метавонад тағйир ёбад, ки ин имконнопазирии ёфтани он ва, бинобарин, арзишро ба вуҷуд меорад.

Масалан, сатрҳо, рақамҳо ва tuple-ҳо (ки аз унсурҳои ғайрифаъол иборатанд) калидҳои мувофиқ мебошанд, зеро hash-и онҳо тағйирнопазир аст.

Калидҳои тағйирёбанда (масалан, рӯйхатҳо ё луғатҳо) истифода бурда намешаванд, зеро онҳо hash-и доимӣ надоранд ва методи hash()-ро дастгирӣ намекунанд. кӯшиши истифодаи объект тағйирёбанда ҳамчун калид хатогии TypeError-ро ба вуҷуд меорад.

Масалан:

my_dict = {}
my_dict[[1, 2, 3]] = "value"  # TypeError: unhashable type: 'list'

Бинобар ин, ғайрифаъол будани калидҳо кори дурустии таблиғи hash-ро таъмин мекунад.