Python hash() 메서드
파이썬 해시() 함수 내장 함수이며 객체에 해시 값이 있는 경우 객체의 해시 값을 반환합니다. 해시 값은 사전 키를 보면서 빠르게 비교하는 데 사용되는 정수입니다. 사전 .
Python hash() 함수 구문
구문: 해시(obj)
매개변수: obj: 해시로 변환해야 하는 객체입니다.
반품 : 가능한 경우 해시된 값을 반환합니다.
hash() 함수의 속성
- hash()를 사용하여 해시된 객체는 되돌릴 수 없으므로 정보가 손실됩니다.
- hash()는 불변 객체에 대해서만 해시된 값을 반환하므로 가변/불변 객체를 확인하는 지표로 사용할 수 있습니다.
- Python에서는 hash() 함수를 사용하여 보안을 위해 데이터를 인코딩할 수 있습니다.
Python hash() 함수 예제
예시 1: hash() 작업 시연
이 예에서는 hash() 함수를 사용하여 hash()를 사용하여 정수, 문자열 및 부동 소수점 해시 값을 인쇄합니다. 파이썬 .
파이썬3
# 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)))> |
산출
The integer hash value is : 4 The string hash value is : 4349415460800802357 The float hash value is : 1291272085159665688
예시 2: hash()의 속성 시연
이 Python 코드는 hash()> 함수는 다음과 같이 동작합니다. 불변 객체와 가변 객체 . 먼저 동일한 요소를 사용하여 튜플과 목록을 초기화합니다. 코드는 튜플의 해시 값을 성공적으로 인쇄합니다. 그러나 변경 가능한 목록의 해시 값을 인쇄하려고 하면 TypeError> 목록과 같은 변경 가능한 객체는 직접 해싱될 수 없기 때문입니다.
파이썬3
# 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)))> |
산출:
The tuple hash value is : 8315274433719620810
예외:
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: 불변 튜플 객체에 대한 hash()
이 Python 코드는 다음과 같은 튜플을 초기화합니다. var> 'G', 'E', 'E', 'K' 문자가 포함되어 있습니다. 그만큼 hash()> 함수는 튜플에 대한 해시 값을 생성하는 데 사용됩니다. var> . 이 경우 코드는 튜플의 내용과 구조를 기반으로 튜플을 나타내는 고유한 정수인 튜플의 해시 값을 인쇄합니다.
파이썬3
# hash() for immutable tuple object> var> => (> 'G'> ,> 'E'> ,> 'E'> ,> 'K'> )> print> (> hash> (var))> |
산출
3843673861956289951
예시 4: hash() 켜짐 그들을 사용할 수 있는 객체
하나의 불변 객체가 사용하는 hash() 메소드를 목록, 세트, 사전과 같은 가변 객체에 사용하면 오류가 발생합니다.
파이썬3
l> => [> 1> ,> 2> ,> 3> ,> 4> ]> print> (> hash> (l))> |
산출
TypeError: unhashable type: 'list'
예제 5: 사용자 정의 개체에 대한 hash()
여기서는 __hash()__ 메서드를 재정의하여 hash()를 호출하고 __eq__() 메서드는 두 사용자 정의 개체가 같은지 확인합니다.
파이썬3
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))> |
산출
The hash is: 7627717261227283506 The hash is: 7627717261227283506