변경 가능 및 불변 객체 Python {예}
가변 객체란 무엇입니까?
변경 가능 Python 변화할 수 있는 대상 또는 본질적으로 변화할 수 있는 것으로 간주될 수 있는 대상으로 정의될 수 있습니다. 변경 가능이란 값을 수정하거나 편집할 수 있는 기능을 의미합니다.
변경 가능한 객체 Python 프로그래머가 자신의 값을 변경할 수 있는 개체를 가질 수 있도록 합니다. 일반적으로 데이터 모음을 저장하는 데 사용됩니다. 변이된 것으로 볼 수 있으며, 객체 내에서 적용 가능한 내부 상태가 변경된 것입니다.
불변 객체란 무엇입니까?
불변 객체 Python 시간이 지나도 값과 속성이 변하지 않는 객체로 정의될 수 있습니다.
이러한 객체는 일단 생성되고 초기화되면 영구적이 되며, 다음에서 사용되는 데이터 구조의 중요한 부분을 형성합니다. Python.
Python 숫자로 사용되며, 튜플, 문자열, 고정 세트 및 사용자 정의 클래스(몇 가지 예외가 있음). 그것들은 변경할 수 없으며 일단 초기화되면 그 값과 값은 영구적으로 유지되므로 불변이라고 불립니다.
In Python, 모든 것은 객체이다
. Python 프로그래밍 언어에서는 모든 것이 목록, 정수 및 함수로 구성된 객체로 간주될 수 있습니다. 이 기능은 객체를 지원하는 다른 프로그래밍 언어와 비교할 수 있습니다.
이 기능은 다음을 사용하여 확인할 수 있습니다. Python 아래와 같이 통역사 : –
Python 암호:
print("The following instance is an object:",isinstance(3,object)) print("Another instance for object", isinstance(True, object)) def my_func(): return "guru99" print("This is a function example and regarded as an object in Python:", isinstance(my_func, object))
출력:
A following instance is an object: True Another instance for object True This is a function example and regarded as an object in Python: True
또한, Python 메모리에 있는 객체의 주소를 반환하는 id라는 내장 함수를 제공합니다. Python 프로그래밍 언어.
Python 암호:
z=200 id(z) print("The id of object is", id(z))
출력:
the id of object is 9795360
위 코드에서 id(obj) 구문을 갖는 id 함수는 obj의 주소를 제공합니다. Python 메모리. 여기에는 z라는 개체가 있고 할당량이 200입니다. 그런 다음 개체 z는 id(z)로 id 함수에 전달되고 Python 객체의 주소를 9795360으로 전달합니다.
변경 가능한 객체 Python
가변 객체에서는 객체의 값이 일정 기간에 걸쳐 변경됩니다.
이 예에서는 변경 가능한 객체를 설명했습니다. Python, 이는 아래와 같이 변경 가능한 객체의 응용 프로그램으로 목록을 활용합니다. –
Python 암호:
mut_list = [1, 2, 3] print("The list in Python",mut_list) mut_list[0] = 'Gurru99' mut_list print("The list in Python after changing value",mut_list)
출력:
The list in Python [1, 2, 3] The list in Python after changing value ['Gurru99', 2, 3]
위의 예에서 볼 수 있듯이 Python 값은 1,2,3이었습니다. 가변 목록의 첫 번째 요소는 1에서 Guru99로 변경되며, 새 값이 초기화될 때 새 객체를 생성하지 않습니다.
여기서 우리는 id 메서드를 사용하여 그것을 활용할 수 있습니다. 다음은 아래와 같이 변경 가능한 객체에 대한 id 메서드의 사용을 보여줍니다. –
Python 암호:
mut_list = [1, 2, 3] print("The list in Python",mut_list) print("the id of the list is ",id(mut_list)) mut_list[0] = 'Gurru99' mut_list print("The mut list in Python after changing value",mut_list) print("the id of the list is post change in value",id(mut_list))
산출
The list in Python [1, 2, 3] the id of the list is 139931568729600 The list in Python after changing value ['Gurru99', 2, 3] the id of the list is post change in value 139931568729600
다음 그림은 변경 가능한 객체를 보여줍니다. Python 아래와 같이: –
불변 객체 Python
불변 객체 Python 인스턴스가 기간 동안 변경되지 않는 개체입니다. 특정 유형의 불변 인스턴스는 일단 생성되면 변경되지 않으며 이는 다음의 id 메소드를 사용하여 확인할 수 있습니다. Python.
정수 유형 객체의 예를 들어 보겠습니다. Python 이는 불변 객체의 개념을 보여줍니다. Python 아래와 같이: –
Python 암호:
a=244 print("the number before change is",a) print("the id of number before change is",id(a)) a=344 print("the number after change is",a) print("the id of number after change is",id(a))
산출
the number before a change is 244 the id of number before change is 9796768 the number before change is 344 the id of number before change is 140032307887024
위에서 'a'에 변화가 있음을 알 수 있다. 메커니즘이 어떻게 작동하는지 연구해 보겠습니다.
- "a"를 344로 초기화해도 객체의 값에는 변화가 없습니다.
- 대신, 새로운 객체가 생성되고 "a"로 제한됩니다.
- 244로 할당된 다른 개체는 더 이상 액세스할 수 없습니다.
- 위의 예에서는 정수 객체를 활용했습니다.
a=244에서 아래와 같이 새 객체가 생성되고 "a"를 참조합니다.
a=344를 사용한 게시물에는 "a"로 참조되는 새 객체가 있습니다. 다음 다이어그램은 동일한 것을 나타냅니다. –
따라서 int 유형의 이름에 새 값이 할당될 때마다 이름과 다른 객체의 바인딩이 변경됩니다. 동일한 원리가 튜플에도 적용됩니다. 문자열, float 및 Boolean 따라서 불변이라고 합니다.
사전 키에 대한 의미 Python
사전은 데이터를 키 형식으로 저장하고 중복을 허용하지 않는 정렬된 컬렉션으로 정의할 수 있습니다. 사전에는 해당 값 쌍이 정렬된 하나의 키가 포함되어 있습니다. 유형이 변경 가능하며 초기화 및 생성 후에도 내용이 변경될 수 있습니다.
언제든지 핵심은 한 번에 하나의 특정 요소를 가리킵니다. 사전의 키는 변경할 수 없습니다.
아래와 같이 가상의 시나리오를 생각해 보겠습니다. –
a = [4, 6] b = [5, 6, 7] my_dict = {a: 'x', b: 'y'} print(my_dict)
출력: – 위의 내용 Python 코드는 출력을 생성하지 않고 대신 해시할 수 없는 유형의 유형 오류를 생성합니다. 이는 가상의 상황이므로 실제 상황에서는 사용되지 않습니다. Python 컴파일러.
여기 a
는 [4,6]으로 정의되어 있고 사전에는 x로 정의되어 있습니다. 여기, b
는 [5,6,7]로 정의되어 있고, 사전에는 y로 정의되어 있습니다.
- 키 'a'는 [4,6]의 값을 가지며 x로 추가로 초기화됩니다.
- 키 'b'에는 사전에서 'y'로 추가로 초기화되는 [5,6,7] 값이 있습니다.
- 이제 '의 값이 있다고 가정합니다.ㅏ' 에는 사전의 키인 5와 7이 추가됩니다.
- 그런 다음 사전이 변경되어 두 가지를 모두 제공합니다. 'NS' and '와이' 위 사전의 값으로.
위에 그림으로 설명된 다음 시나리오를 고려하십시오. –
a = [5, 6,7] b = [5, 6, 7] my_dict = {a: 'x', b: 'y'} print(my_dict)
따라서 프로그래밍 언어로서 Python 사전의 키를 불변으로 만들고 사전은 불변의 데이터 유형입니다.
불변성의 예외
그러나, Python 불변성에 대한 예외를 제공합니다. 이러한 예외는 튜플 객체 유형에서 관찰될 수 있습니다. 튜플은 변경 가능한 객체 유형과 불변 객체 유형의 조합일 수 있습니다. 아래와 같이 불변성의 예외를 설명하는 예를 들어 보겠습니다.
Python 암호:
tupexample=([1,1],'guru99') print("the tuple before change",tupexample) print("the id of tuple before change",id(tupexample)) tupexample=([2,2],'guru99') print("the tuple after change",tupexample) print("the id of tuple after change",id(tupexample))
출력:
the tuple before change ([1, 1], 'guru99') the id of tuple before change 140649480694656 the tuple after change ([2, 2], 'guru99') the id of tuple after change 140649480694592
위 코드에서 볼 수 있듯이 첫 번째 요소인 목록은 변경 가능하지만 튜플은 변경할 수 없습니다. 튜플의 값은 변경할 수 없지만 튜플 내부에 있는 목록의 내용은 해당 값을 변경할 수 있습니다.
따라서 불변 객체는 값을 변경하지 않지만 구성 요소의 값은 해당 값을 변경한다는 예외가 발생합니다.
변경 가능한 객체와 불변 객체
변경 가능한 객체와 불변 객체의 주요 차이점은 다음과 같습니다.
가변 객체 | 불변 객체 |
---|---|
객체 상태는 생성된 후에 변경될 수 있습니다. | 객체 상태는 일단 생성되면 변경할 수 없습니다. |
변경 가능한 객체는 본질적으로 스레드로부터 안전한 것으로 간주되지 않습니다. | 불변 객체는 본질적으로 스레드로부터 안전한 것으로 간주됩니다. |
변경 가능한 개체는 최종적으로 만들어지지 않으므로 프로그래머는 변경 가능한 개체를 계속 변경하고 동일한 개체를 사용할 수 있습니다. | 불변 객체가 생성될 때 클래스를 최종으로 만드는 것이 중요합니다. |
Python 불변 데이터 유형
클래스 | 설명 | 불변 여부 |
---|---|---|
부울 | 부울 값 | 변경할 수없는 |
INT | 정수 값(크기는 임의적일 수 있음) | 변경할 수없는 |
흙손 | 부동 소수점 숫자 | 변경할 수없는 |
명부 | 변경 가능한 성격의 객체 시퀀스 | 변하기 쉬운 |
튜플 | 불변의 성격을 지닌 객체의 순서 | 변경할 수없는 |
스트레스 | 문자/문자열 | 변경할 수없는 |
세트 | 정렬되지 않은 성격을 지닌 별개의 개체 집합 | 변하기 쉬운 |
냉동세트 | 불변 자연의 클래스 설정 | 변경할 수없는 |
딕셔너리 | 사전 또는 연관 매핑 | 변하기 쉬운 |