Python Anti Pattern - Test for object identity should be is

Posted by Hide­
2019.01.28 15:17 Coding/Python

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



다른 사람들이 많이 읽은 글
이 댓글을 비밀 댓글로

티스토리 툴바