Metodo Python hash()
Funzione hash() di Python è una funzione incorporata e restituisce il valore hash di un oggetto se ne ha uno. Il valore hash è un numero intero utilizzato per confrontare rapidamente le chiavi del dizionario mentre si guarda a dizionario .
Sintassi della funzione hash() di Python
Sintassi: hash(oggetto)
Parametri: oggetto: L'oggetto che dobbiamo convertire in hash.
Ritorna : Restituisce il valore con hash, se possibile.
Proprietà della funzione hash()
- Gli oggetti sottoposti ad hashing utilizzando hash() sono irreversibili e portano alla perdita di informazioni.
- hash() restituisce il valore hash solo per oggetti immutabili, quindi può essere utilizzato come indicatore per verificare la presenza di oggetti mutabili/immutabili.
- Possiamo codificare i dati per la sicurezza in Python utilizzando la funzione hash().
Esempi di funzioni Python hash()
Esempio 1: Dimostrazione del funzionamento di hash()
In questo esempio, stiamo utilizzando la funzione hash() per stampare il valore hash intero, stringa e float utilizzando hash() in Pitone .
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)))> |
Produzione
The integer hash value is : 4 The string hash value is : 4349415460800802357 The float hash value is : 1291272085159665688
Esempio 2: Dimostrazione della proprietà di hash()
Questo codice Python dimostra come hash()> la funzione si comporta con oggetti immutabili e mutevoli . Innanzitutto inizializza una tupla e una lista con gli stessi elementi. Il codice stampa correttamente il valore hash della tupla. Tuttavia, quando tenta di stampare il valore hash della lista, che è mutabile, solleva un'eccezione TypeError> perché gli oggetti mutabili come gli elenchi non possono essere sottoposti direttamente ad hashing.
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)))> |
Produzione:
The tuple hash value is : 8315274433719620810
Eccezioni:
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' Esempio 3: hash() per oggetto tupla immutabile
Questo codice Python inizializza una tupla denominata var> contenente i caratteri 'G', 'E', 'E' e 'K'. IL hash()> la funzione viene utilizzata per generare un valore hash per la tupla var> . In questo caso, il codice stampa il valore hash della tupla, che è un numero intero univoco che rappresenta la tupla in base al suo contenuto e alla sua struttura.
Python3
# hash() for immutable tuple object> var> => (> 'G'> ,> 'E'> ,> 'E'> ,> 'K'> )> print> (> hash> (var))> |
Produzione
3843673861956289951
Esempio 4: hash() attivo loro Oggetto utilizzabile
metodo hash() utilizzato da un oggetto immutabile, se lo usiamo su un oggetto mutabile come list, set, dizionari, genererà un errore.
Python3
l> => [> 1> ,> 2> ,> 3> ,> 4> ]> print> (> hash> (l))> |
Produzione
TypeError: unhashable type: 'list'
Esempio 5: hash() su un oggetto personalizzato
Qui sovrascriveremo i metodi __hash()__ per chiamare hash() e il metodo __eq__() controllerà l'uguaglianza dei due oggetti personalizzati.
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))> |
Produzione
The hash is: 7627717261227283506 The hash is: 7627717261227283506