할당 연산자 = on Lists Unveiled
Python에서 = 연산자는 적용되는 개체 유형에 따라 다른 기능을 갖습니다. 목록에 사용하면 호출하는 기본 특수 메서드를 이해함으로써 설명할 수 있는 몇 가지 예상치 못한 동작이 발생합니다.
일반적으로 =는 내부 추가를 위해 __iadd__ 특수 메서드를 호출하려고 합니다. 없으면 대신 __add__를 사용합니다.
__iadd__를 사용한 내부 수정
변경 가능한 유형인 목록의 경우 Python은 __iadd__ 메서드를 제공합니다. =를 만나면 Python은 목록에서 __iadd__를 호출하여 요소를 변경하고 추가할 수 있도록 합니다.
__add__를 사용한 새 객체 생성
목록에 __iadd__ 메서드가 없으면 Python이 기본값을 사용합니다. __추가__합니다. 이 방법은 원본 목록을 수정하는 대신 새 목록을 만듭니다. 결과적으로 =는 =를 사용하여 새 목록을 할당한 것처럼 동작합니다.
예제 및 출력
질문의 코드 예 참조:
class foo: bar = [] def __init__(self, x): self.bar += [x] class foo2: bar = [] def __init__(self, x): self.bar = self.bar + [x] f = foo(1) g = foo(2) print(f.bar) print(g.bar) f.bar += [3] print(f.bar) print(g.bar) f.bar = f.bar + [4] print(f.bar) print(g.bar) f = foo2(1) g = foo2(2) print(f.bar) print(g.bar)
출력:
[1, 2] [1, 2] [1, 2, 3] [1, 2, 3] [1, 2, 3, 4] [1, 2, 3] [1] [2]
- 용 foo, __iadd__ 및 __add__가 모두 정의되지 않았습니다. 따라서 =는 새 목록을 생성하고 이를 모든 인스턴스에서 공유되는 bar 속성에 할당합니다.
- foo2의 경우 __add__는 정의되지만 __iadd__는 정의되지 않습니다. 결과적으로 =는 공유 목록을 수정하지 않고 bar 속성에 할당하여 새 목록을 생성합니다.
__iadd__와 __add__의 차이점을 이해하면 목록에서 =의 동작을 예측하여 예상치 못한 일을 방지할 수 있습니다. 놀랍습니다.
위 내용은 Python의 = 연산자는 목록과 해당 __iadd__ 및 __add__ 메서드와 어떻게 작동합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

forhandlinglargedatasetsinpython, usenumpyarraysforbetterperformance.1) numpyarraysarememory-effic andfasterfornumericaloperations.2) leveragevectorization foredtimecomplexity.4) managemoryusage withorfications data

inpython, listsusedyammoryAllocation과 함께 할당하고, whilempyarraysallocatefixedMemory.1) listsAllocatemememorythanneedInitiality.

Inpython, youcansspecthedatatypeyfelemeremodelerernspant.1) usenpynernrump.1) usenpynerp.dloatp.ploatm64, 포모 선례 전분자.

numpyissentialfornumericalcomputinginpythonduetoitsspeed, memory-efficiency 및 comperniveMathematicaticaltions

contiguousUousUousUlorAllocationScrucialForraysbecauseItAllowsOfficationAndFastElementAccess.1) ItenableSconstantTimeAccess, o (1), DuetodirectAddressCalculation.2) Itimprovesceeffiency theMultipleementFetchespercacheline.3) Itsimplififiesmomorym

slicepaythonlistisdoneusingthesyntaxlist [start : step : step] .here'showitworks : 1) startistheindexofthefirstelementtoinclude.2) stopistheindexofthefirstelemement.3) stepisincrementbetwetweentractionsoftortionsoflists

NumpyAllowsForVariousOperationsOnArrays : 1) BasicArithmeticLikeadDition, Subtraction, A 및 Division; 2) AdvancedOperationsSuchasmatrixmultiplication; 3) extrayintondsfordatamanipulation; 5) Ag

Arraysinpython, 특히 Stroughnumpyandpandas, areestentialfordataanalysis, setingspeedandefficiency


핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

안전한 시험 브라우저
안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.
