본문으로 바로가기
반응형

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

반응형