logo

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)

konvertavimas iš eilutės į int Java

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)))>

>

unix sukurti katalogą
>

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, kaiphash()>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 aTypeError>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:

simetriškas skirtumas
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ą pavadinimuvar>su simboliais „G“, „E“, „E“ ir „K“. Thehash()>funkcija naudojama maišos vertei generuoti sekaivar>. Š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




išnašų žymėjimas

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




abstrakčioje klasėje gali būti konstruktorius

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>