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

  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() 함수 사이에 존재하는 주요 차이점은 전자는 컨테이너 내 요소의 실제 길이를 반환하고 후자는 이 객체가 차지하는 메모리 크기를 반환한다는 것입니다.

튜토리얼이 마음에 드시나요? DelftStack을 구독하세요 YouTube에서 저희가 더 많은 고품질 비디오 가이드를 제작할 수 있도록 지원해주세요. 구독하다

관련 문장 - Python Memory