Python hash() metodas
Python hash() funkcija yra integruota funkcija ir grąžina objekto maišos reikšmę, jei ji tokią turi. Maišos reikšmė yra sveikasis skaičius, naudojamas greitai palyginti žodyno raktus žiūrint į a žodynas .
Python hash() funkcija Sintaksė
Sintaksė: maiša (obj)
Parametrai: obj: Objektas, kurį turime konvertuoti į maišą.
Grąžinimai: Jei įmanoma, grąžina maišos vertę.
Funkcijos hash() savybės
- Objektų maiša naudojant hash() yra negrįžtama, todėl prarandama informacija.
- hash() grąžina maišos reikšmę tik nekintamiems objektams, todėl gali būti naudojamas kaip indikatorius tikrinant, ar nėra kintamų / nekintamų objektų.
- Duomenis saugos tikslais Python galime užkoduoti naudodami hash() funkciją.
Python hash() funkcijų pavyzdžiai
1 pavyzdys: Hash() veikimo demonstravimas
Šiame pavyzdyje mes naudojame funkciją hash() norėdami atspausdinti sveikąjį skaičių, eilutę ir plūduriuojančią maišos reikšmę naudodami hash() Python .
Python3
# initializing objects> int_val> => 4> str_val> => 'techcodeview.com'> flt_val> => 24.56> # Printing the hash values.> # Notice Integer value doesn't change> # You'll have answer later in article.> print> (> 'The integer hash value is : '> +> str> (> hash> (int_val)))> print> (> 'The string hash value is : '> +> str> (> hash> (str_val)))> print> (> 'The float hash value is : '> +> str> (> hash> (flt_val)))> |
Išvestis
The integer hash value is : 4 The string hash value is : 4349415460800802357 The float hash value is : 1291272085159665688
2 pavyzdys: Hash() savybės demonstravimas
Šis Python kodas parodo, kaip hash()> funkcija elgiasi su nekintantys ir kintami objektai . Pirmiausia ji inicijuoja seką ir sąrašą su tais pačiais elementais. Kodas sėkmingai išspausdina sektos maišos reikšmę. Tačiau kai jis bando atspausdinti sąrašo maišos reikšmę, kuri yra kintama, ji iškelia a TypeError> nes kintamiems objektams, pvz., sąrašams, negalima tiesiogiai pritaikyti maišos.
Python3
# initializing objects> # tuple are immutable> tuple_val> => (> 1> ,> 2> ,> 3> ,> 4> ,> 5> )> # list are mutable> list_val> => [> 1> ,> 2> ,> 3> ,> 4> ,> 5> ]> # Printing the hash values.> # Notice exception when trying> # to convert mutable object> print> (> 'The tuple hash value is : '> +> str> (> hash> (tuple_val)))> print> (> 'The list hash value is : '> +> str> (> hash> (list_val)))> |
Išvestis:
The tuple hash value is : 8315274433719620810
Išimtys:
Traceback (most recent call last): File '/home/eb7e39084e3d151114ce5ed3e43babb8.py', line 15, in print ('The list hash value is : ' + str(hash(list_val))) TypeError: unhashable type: 'list' 3 pavyzdys: hash() nekintamam objektui
Šis Python kodas inicijuoja seką pavadinimu var> su simboliais „G“, „E“, „E“ ir „K“. The hash()> funkcija naudojama maišos vertei generuoti sekai var> . Šiuo atveju kodas išspausdina sekos maišos reikšmę, kuri yra unikalus sveikasis skaičius, kuris atspindi seką pagal jos turinį ir struktūrą.
Python3
# hash() for immutable tuple object> var> => (> 'G'> ,> 'E'> ,> 'E'> ,> 'K'> )> print> (> hash> (var))> |
Išvestis
3843673861956289951
4 pavyzdys: hash() įjungta juos utable Objektas
Hash() metodas, naudojamas vienam nekintančiam objektui, jei naudosime jį kintamam objektui, pvz., sąrašui, rinkiniui, žodynams, jis sugeneruos klaidą.
Python3
l> => [> 1> ,> 2> ,> 3> ,> 4> ]> print> (> hash> (l))> |
Išvestis
TypeError: unhashable type: 'list'
5 pavyzdys: hash() tinkintame objekte
Čia mes nepaisysime __hash()__ metodų, kad iškviestume hash(), o __eq__() metodas patikrins dviejų pasirinktinių objektų lygybę.
Python3
class> Emp:> > def> __init__(> self> , emp_name,> id> ):> > self> .emp_name> => emp_name> > self> .> id> => id> > def> __eq__(> self> , other):> > > # Equality Comparison between two objects> > return> self> .emp_name> => => other.emp_name> and> self> .> id> => => other.> id> > def> __hash__(> self> ):> > > # hash(custom_object)> > return> hash> ((> self> .emp_name,> self> .> id> ))> emp> => Emp(> 'Ragav'> ,> 12> )> print> (> 'The hash is: %d'> %> hash> (emp))> # We'll check if two objects with the same> # attribute values have the same hash> emp_copy> => Emp(> 'Ragav'> ,> 12> )> print> (> 'The hash is: %d'> %> hash> (emp_copy))> |
Išvestis
The hash is: 7627717261227283506 The hash is: 7627717261227283506