파이썬에서 len()과 sys.getsizeof()의 차이점
언뜻보기에 Python의 len()
및 sys.getsizeof()
함수는 객체의 길이를 찾는 것과 동일한 기능을 가진 것처럼 보입니다. 반대로, 이 두 가지 방법은 구현될 때 완전히 다른 의미론적 의미를 갖습니다.
Python의 len()
함수
len()
함수는 개체의 항목 수를 쿼리하는 데 사용됩니다. 객체는 배열, 대기열, 튜플 또는 목록일 수 있습니다. 이 메서드가 문자열에서 호출되면 해당 특정 문자열의 문자 수를 반환합니다.
예시:
print(len("Batman"))
출력:
6
6은 배트맨 문자열을 구성하는 총 문자 수입니다.
아래와 같이 항목 목록에서 len()
함수를 호출하면 목록을 구성하는 총 항목 수를 반환합니다.
animals = ["Koala", "Guineapig", "Bear", "Zebra", "Giraffe"]
print(len(animals))
출력:
5
동물 목록에는 반환되는 출력으로 총 5마리의 동물이 포함됩니다.
Python의 sys.getsizeof()
함수
Python의 sys 모듈은 본질적으로 바이트 단위로 전달되는 객체의 메모리 크기를 반환하는 sys.getsizeof()
함수를 제공합니다. 개체의 메모리 소비는 개체가 참조하는 메모리 소비 대신 고려되는 것입니다. 이 함수는 구현에 따라 다르므로 내장 객체가 전달되면 올바른 결과를 반환합니다. 그렇지 않으면 타사 확장에 대해 잘못된 결과를 반환할 수 있습니다.
sys.getsizeof()
구문
sys.getsizeof(object[, default])
개체 인수가 크기를 찾을 항목인 동안 기본 인수를 사용하면 개체 인수가 크기를 검색하지 않는 경우 반환될 값을 정의할 수 있습니다. 객체가 크기 검색에 실패하고 기본값이 제공되지 않으면 TypeError
예외가 발생합니다.
sys.getsizeof()
함수를 사용하면 개체의 _sizeof_
메서드를 호출한 다음 가비지 수집기가 개체를 관리하는 경우 추가 가비지 수집기 오버헤드를 추가합니다.
예시:
import sys
print(sys.getsizeof("hello"))
출력:
54
출력은 bytes
단위입니다. 이것은 hello
가 차지하는 총 메모리 크기입니다.
빈 문자열은 메모리에서 49바이트를 차지합니다.
import sys
print(sys.getsizeof(""))
출력:
49
len()
과 sys.getsizeof()
함수 사이에 존재하는 주요 차이점은 전자는 컨테이너 내 요소의 실제 길이를 반환하고 후자는 이 객체가 차지하는 메모리 크기를 반환한다는 것입니다.