반응형
Test for object identity should be is
두개의 객체를 테스트할 때 is라는 오퍼레이터를 사용할 수 있다.
가장 많이 사용하는 케이스는 None인지 아닌지 판별할 때라고 볼 수 있다.
하지만 다른 어떠한 종류도 비교할 수 있다.
가끔씩 혼란스러울수도 있는데, 아마 다른 두개의 객체를 비교하면 False를 반환하기 때문일 것이다.
Anti-pattern
a = range(10) b = range(10) print((a is b))
위 코드는a와 b가 같음에도 불구하고 False를 반환한다.
같은 값을 가지고 있지만 각 객체자체가 다르기 때문이다.
따라서 두개의 객체가 같은지 판단하기 위해서는 ==를 사용하는것이 좋다.
Best practice
some_list = None if some_list is None: do_somthing_with_the_list()
is 오퍼레이터는 두개의 객체가 정확히 같은 요소를 참조하는지 판단할때만 사용하자.
출처 : https://docs.quantifiedcode.com/python-anti-patterns/readability/test_for_object_identity_should_be_is_not.html