logo

Metoda hash() Pythonu

Funkce hash() v Pythonu je vestavěná funkce a vrací hash hodnotu objektu, pokud nějakou má. Hodnota hash je celé číslo, které se používá k rychlému porovnání klíčů slovníku při pohledu na a slovník .

Syntaxe funkce hash() v Pythonu

Syntaxe: hash(obj)



Parametry: obj: Objekt, který potřebujeme převést na hash.

Vrátí: Pokud je to možné, vrátí hašovanou hodnotu.

Vlastnosti funkce hash().

  • Objekty hashované pomocí hash() jsou nevratné, což vede ke ztrátě informací.
  • hash() vrací hašovanou hodnotu pouze pro neměnné objekty, proto může být použit jako indikátor pro kontrolu proměnných/neměnných objektů.
  • Pro zabezpečení v Pythonu můžeme zakódovat data pomocí funkce hash().

Příklady funkcí hash() Pythonu

Příklad 1: Ukázka fungování hash()

V tomto příkladu používáme funkci hash() k tisku hodnoty hash celého čísla, řetězce a float pomocí hash() v Krajta .



Python3






k nejbližší soused

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

>

bellfordův algoritmus
>

Výstup

The integer hash value is : 4 The string hash value is : 4349415460800802357 The float hash value is : 1291272085159665688>

Příklad 2: Demonstrace vlastnosti hash()

Tento kód Pythonu ukazuje, jakhash()>funkce se chová s neměnné a proměnlivé předměty . Nejprve inicializuje n-tici a seznam se stejnými prvky. Kód úspěšně vytiskne hodnotu hash n-tice. Když se však pokusí vytisknout hodnotu hash seznamu, která je měnitelná, vyvolá aTypeError>protože měnitelné objekty, jako jsou seznamy, nelze přímo hašovat.

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

>

>

Výstup:

javafx
The tuple hash value is : 8315274433719620810>

Výjimky:

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

Příklad 3: hash() pro Immutable Tuple Object

Tento kód Pythonu inicializuje n-tici s názvemvar>obsahující znaky ‚G‘, ‚E‘, ‚E‘ a ‚K‘. Thehash()>funkce se používá ke generování hodnoty hash pro n-ticivar>. V tomto případě kód vytiskne hash hodnotu n-tice, což je jedinečné celé číslo, které představuje n-tice na základě jejího obsahu a struktury.

Python3




# hash() for immutable tuple object> var>=> (>'G'>,>'E'>,>'E'>,>'K'>)> print>(>hash>(var))>

>

>

: v Javě
Výstup

3843673861956289951>

Příklad 4: hash() on M upotřebitelný objekt

metodu hash() používanou jedním neměnným objektem, pokud ji použijeme na proměnlivý objekt, jako je seznam, sada, slovníky, vygeneruje chybu.

Python3




l>=> [>1>,>2>,>3>,>4>]> print>(>hash>(l))>

>

>

Výstup

vyberte multi table sql
TypeError: unhashable type: 'list'>

Příklad 5: hash() na vlastním objektu

Zde přepíšeme metody __hash()__ pro volání hash() a metoda __eq__() zkontroluje rovnost dvou vlastních objektů.

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

>

>

Výstup

The hash is: 7627717261227283506 The hash is: 7627717261227283506>