모든 것이 객체입니다
모든 유형의 상수와 변수, 정수, 부울, 함수까지 포함하여 Python의 모든 것이 객체입니다. Stackoverflow에 대한 질문을 참조하세요 Is everything an object in Python like ruby
코드에서 확인할 수 있습니다:
# everything in python is object def fuction(): return print isinstance(True, object ) print isinstance(0, object) print isinstance('a', object) print isinstance(fuction, object)
계산 방법
Python은 sys 모듈에서 getsizeof 함수를 제공합니다. Python 객체 크기를 계산합니다.
sys.getsizeof(object[, default]) 以字节(byte)为单位返回对象大小。 这个对象可以是任何类型的对象。 所以内置对象都能返回正确的结果 但不保证对第三方扩展有效,因为和具体实现相关。 ...... getsizeof() 调用对象的 __sizeof__ 方法, 如果对象由垃圾收集器管理, 则会加上额外的垃圾收集器开销。
물론, 개체 메모리 사용량은 Python 버전 및 운영 체제 버전과 밀접한 관련이 있습니다. 이 기사의 코드 및 테스트 결과는 다음을 기반으로 합니다. windows7 32비트 운영 체제.
import sys print sys.version
2.7.2(기본값, 2011년 6월 24일, 12:21:10) [MSC v.1500 32비트(Intel)]
기본 유형
•부울 유형
'True의 크기: %d' % (sys.getsizeof(True)) 인쇄 'False의 크기: %d' % (sys.getsizeof (False))
출력:
True의 크기: 12 False의 크기: 12
•Integer
# 일반 정수 인쇄 '정수 크기 : %d' % (sys.getsizeof(1)) # long print '긴 정수의 크기: %d' % (sys.getsizeof(1L)) 인쇄 '큰 긴 정수의 크기: %d' % (sys.getsizeof (100000L)) 출력:
정수 크기: 12x 장정수 크기 1L: 14 장정수 크기 100000L: 16
정수가 12바이트를 차지하는 것을 볼 수 있으며, 긴 정수 유형은 최소 14바이트를 차지하며, 비트 수가 증가할수록 차지하는 공간은 더 커집니다. 버전 2.x에서는 정수형의 값이 sys.maxint를 초과하면 자동으로 긴 정수로 확장됩니다. Python 3.0 이후에는 정수와 긴 정수가 하나의 유형으로 통합됩니다.
•Float 유형
'float 크기: %d' % (sys.getsizeof(1.0))
출력:
float 크기 인쇄 : 16
부동소수점 형식은 16바이트를 차지합니다. 특정 정밀도를 초과하면 반올림됩니다.
다음 코드 참조:
print 1.00000000003 print 1.000000000005
출력:
1.00000000001
•문자열
# 문자열 유형의 크기 print 'rn'.join(["%d 문자가 있는 문자열의 크기: %d" % (len(elem), sys.getsizeof(elem)) for elem in ["" , "a", "ab"]]) # 유니코드 문자열의 크기 print 'rn'.join(["%d 문자를 포함한 유니코드 문자열의 크기: %d" % (len(elem), sys.getsizeof(elem) ) for elem in [u"", u"a", u"ab"]])
출력:
문자가 0개인 문자열 크기: 21문자가 있는 문자열 크기: 22 문자가 2개인 문자열 크기: 23 문자가 0개인 유니코드 문자열 크기: 26 문자가 1개인 유니코드 문자열 크기: 28 문자가 2개인 유니코드 문자열 크기: 30
일반적인 빈 문자열은 21바이트를 차지합니다. 각 추가 문자는 1바이트를 더 차지합니다. 유니코드 문자열은 최소 26바이트를 차지하며 각 추가 문자는 추가로 2바이트를 차지합니다.
컬렉션 유형
•List
# 목록 유형의 크기 print 'rn'.join(["%d 요소가 있는 목록의 크기: %d" [[], [0], [0,2], [0,1,2]]])
출력:
요소가 0개인 목록 크기: 36 요소가 1개인 목록 크기: 40 요소가 2개인 목록 크기: 44 요소가 3개인 목록 크기: 48
표시되는 목록은 최소한 36자 섹션, 각 추가 요소는 4바이트를 추가합니다. 그러나 sys.getsizeof 함수는 컨테이너 유형의 요소 크기를 계산하지 않는다는 점에 유의하십시오. 예:
print '3개의 정수가 있는 목록의 크기 %d' % (sys.getsizeof([0,1,2])) print '3개의 문자열이 있는 목록의 크기 %d' % (sys. getsizeof (['0','1','2']))
출력:
3개의 정수가 있는 목록 크기 48 3개의 문자열이 있는 목록 크기 48
컨테이너에 저장되는 내용은 요소에 대한 참조여야 합니다. 컨테이너의 정확한 계산을 원할 경우 레시피의 재귀적 크기를 참조할 수 있습니다. 그것이 제공하는 total_size 함수를 사용하십시오:
print '3개의 정수가 있는 목록의 전체 크기 %d' % (total_size([0,1,2])) print '3개의 문자열이 있는 목록의 전체 크기 %d' % (total_size(['0','1','2']))
출력은 다음과 같습니다.
3개의 정수가 있는 목록의 전체 크기 84 3개의 문자열이 있는 목록의 전체 크기 114
목록이 차지하는 공간은 기본 공간 36 + (객체 참조 4 + 객체 크기) * 요소 수임을 알 수 있습니다.
또한 목록 변수를 선언하면 요소를 추가할 때 효율성을 높이기 위해 일부 공간이 미리 할당됩니다.
li = [] for i in range(0, 101) : %d 정수 크기의 목록 인쇄: %d, total_size: %d' % (i, getsizeof(li), total_size(li)) li.append(i)
•Tuple
기본적으로 목록과 유사하지만 최소 28바이트를 차지합니다.
기본적인 상황의 경우 사전에 대한 Python의 기본 해시 데이터 구조에 대한 [stackoverflow] 질문에서 몇 가지 답변을 참조할 수 있습니다.
•사전의 최소 공간은 8개 항목(PyDict_MINSIZE)입니다.
•항목 수가 50,000개 미만인 경우 매번 4배씩 증가합니다.
•항목 수가 더 많은 경우 50,000보다 크면 매번 2배씩 증가합니다.
•키의 해시 값은 사전에 캐시되며 사전 크기가 조정된 후에는 다시 계산되지 않습니다.
사전은 매번 크기가 조정됩니다. 2/3에 가까워요.
위 Python 개체 메모리 사용에 관한 기사는 모두 편집자가 공유한 내용이므로 참고가 되기를 바라며 PHP 중국어 웹사이트를 지원해 주시길 바랍니다.
Python 객체 메모리 사용과 관련된 더 많은 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!

numpyarraysarebetterfornumericaloperations 및 multi-dimensionaldata, mumemer-efficientArrays

numpyarraysarebetterforheavynumericalcomputing, whilearraymoduleisiMoresuily-sportainedprojectswithsimpledatatypes.1) numpyarraysofferversatively 및 formanceforgedatasets 및 complexoperations.2) Thearraymoduleisweighit 및 ep

ctypesallowscreatingandmanipulatingC-stylearraysinPython.1)UsectypestointerfacewithClibrariesforperformance.2)CreateC-stylearraysfornumericalcomputations.3)PassarraystoCfunctionsforefficientoperations.However,becautiousofmemorymanagement,performanceo

Inpython, "목록", isaversatile, mutablesequencetatcanholdmixeddatattypes, whilean "array"isamorememory-efficed, homogeneouseceenceRequiringElements ofthesAmeType.1) ListSareIdeAldiversEdatastorageandmanipulationDuetoIrflexibrieth

PythonlistsAndarraysareBotheBotheBothebothable.1) ListSareflexibleandsupporterogenousDatabutarabestemory-efficient.2) Arraysaremorememory-efforhomogeneousdatabutlessverstile, CorrectTypecodeusagetoavoidercer가 필요합니다.

Python과 C는 각각 고유 한 장점이 있으며 선택은 프로젝트 요구 사항을 기반으로해야합니다. 1) Python은 간결한 구문 및 동적 타이핑으로 인해 빠른 개발 및 데이터 처리에 적합합니다. 2) C는 정적 타이핑 및 수동 메모리 관리로 인해 고성능 및 시스템 프로그래밍에 적합합니다.

Python 또는 C를 선택하는 것은 프로젝트 요구 사항에 따라 다릅니다. 1) 빠른 개발, 데이터 처리 및 프로토 타입 설계가 필요한 경우 Python을 선택하십시오. 2) 고성능, 낮은 대기 시간 및 근접 하드웨어 제어가 필요한 경우 C를 선택하십시오.

매일 2 시간의 파이썬 학습을 투자하면 프로그래밍 기술을 효과적으로 향상시킬 수 있습니다. 1. 새로운 지식 배우기 : 문서를 읽거나 자습서를 시청하십시오. 2. 연습 : 코드를 작성하고 완전한 연습을합니다. 3. 검토 : 배운 내용을 통합하십시오. 4. 프로젝트 실무 : 실제 프로젝트에서 배운 것을 적용하십시오. 이러한 구조화 된 학습 계획은 파이썬을 체계적으로 마스터하고 경력 목표를 달성하는 데 도움이 될 수 있습니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

SecList
SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

PhpStorm 맥 버전
최신(2018.2.1) 전문 PHP 통합 개발 도구

WebStorm Mac 버전
유용한 JavaScript 개발 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는
