파이썬에서 len()과 sys.getsizeof()의 차이점

Neema Muganga 2023년1월30일
  1. Python의 len() 함수
  2. Python의 sys.getsizeof() 함수
파이썬에서 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() 함수 사이에 존재하는 주요 차이점은 전자는 컨테이너 내 요소의 실제 길이를 반환하고 후자는 이 객체가 차지하는 메모리 크기를 반환한다는 것입니다.

관련 문장 - Python Memory