객체가 리스트나 튜플일때만 True, 스트링은 False처리하려면 어떻게 하죠
조회수 1738회
어떤 객체가 리스트/튜플이면 프로그램을 계속 실행하고, 스트링의 경우는 assert
하는 스크립트를 만드려고 합니다.
assert isinstance(lst, list)
나 isinstance(lst, tuple)
같이 쓰는 것 말고 더 나은 방법이 있을까요
1 답변
-
먼저, isinstance()의 두 번째 인자는 튜플형을 받을 수 있기 때문에
assert isinstance(lst, list) or isinstance(lst, tuple)
는assert isinstance(lst, (list, tuple))
로 줄일 수 있습니다.그리고 assert를 쓸 때, 제가 생각하기에는
assert not isinstance(lst, basestring)
로 쓰는 게 더 나은 방법인 것 같습니다 (파이썬3은basestring
을 쓸 수 없으니string
으로 바꿔주세요)질문하신 방법처럼 쓴다면
list
/tuple
의subclass
는 아니지만,list
/tuple
처럼 작동하는 다른 타입에서도assertionError
가 발생하기 때문입니다.
댓글 입력