Python이 False와 True에 대한 참조 횟수를 유지하는 이유는 무엇입니까?
-
12-09-2019 - |
문제
나는 hasattr 내장 함수의 소스 코드를 보고 있었는데 내 관심을 불러일으키는 몇 줄을 발견했습니다.
Py_INCREF(Py_False);
return Py_False;
...
Py_INCREF(Py_True);
return Py_True;
그렇지 않습니까? Py_False
그리고 Py_True
글로벌 가치?단지 호기심에서 벗어나 Python이 이러한 변수에 대한 참조 횟수를 유지하는 이유는 무엇입니까?
해결책
모든 객체 처리를 균일하게 만드는 것입니다.함수의 반환 값을 처리하는 C 코드를 작성하는 경우 해당 개체의 참조 횟수를 늘리거나 줄여야 합니다.함수가 True를 반환하면 참조 카운트를 조작할지 여부를 알기 위해 그것이 특수 객체 중 하나인지 확인하고 싶지 않습니다.나는 모든 사물을 동일하게 다룰 수 있다.
True 및 False(그리고 None, btw)를 다른 모든 객체와 동일하게 처리함으로써 C 코드는 전체적으로 훨씬 간단해졌습니다.
제휴하지 않습니다 StackOverflow