def funcA(x):
return x
funcA.__code__.__hash__()
이 funcA
여부를 확인하기위한 적절한 방법인가를 해싱?가 변경되었습니다 파이썬 함수
funcA.__hash__()
은 id(funcA)/16
과 동일하게 작동하지 않습니다. 나는 점검했다. 그리고 이것은 __code__.__hash__()
를 위해 사실이 아니다. 또한 ipython 터미널에서 동작을 테스트 한 결과로 보였다. 그러나 이것이 보장 되는가?
나는 동일한 기능의 새 버전으로 기능의 이전 버전을 비교하는 방법을 가지고 싶습니다.
디스크 기반/장기 캐시 용으로 데코레이터 을 만들려고합니다. 따라서 함수가 변경되었는지 확인하는 방법이 필요합니다. 또한 콜 그래프를보고 호출 된 함수가 변경되지 않았는지 확인해야하지만 이는이 질문의 일부가 아닙니다.
요구 사항 :
-
여러 통화 및 기계 이상 안정 필요
- . 1은 파이썬 3.3에서 새로운 인스턴스의 시작마다
hash()
이 랜덤 화된다고 말합니다. "해시 무인화가 기본값에 의해 사용 중지되었습니다"라고도 말합니다. 이상적으로, 무작위 화가 가능하더라도 안정적인 기능을 원합니다. - 이상적으로는
def funcA: pass
및def funcB: pass
에 대해 동일한 해시를 산출합니다. 즉, 함수 이름 만 변경 될 때입니다. 아마도 필요하지 않습니다. - 가 난 단지 파이썬 3. 신경
하나의 대안은 주어진 함수를 포함하는 파일 내의 텍스트를 해시하는 것입니다.
아마도 'pickle'과 같은 것이 더 유용할까요? –
피클은 어떻게 더 유용할까요? 나는 그 기능을 피클해야합니까? – Unapiedra
"함수 (내장 및 사용자 정의)는 값이 아닌"정규화 된 "이름 참조에 의해 절취됩니다. 즉 함수가 정의 된 모듈의 이름과 함께 함수 이름 만 절인됩니다. 함수의 코드도 함수 속성도 절대로 절식되지 않습니다. " 피클에 관한 파이썬 문서에서. – Unapiedra