반응형
Python의 변경 가능 및 불변 객체 예제
Python의 변경 가능 및 불변 객체 {EXAMPLES}
가변 객체란 무엇입니까?
Python에서 변경 가능은 변경될 수 있거나 본질적으로 변경 가능한 것으로 간주되는 객체로 정의할 수 있습니다. 변경 가능은 값을 수정하거나 편집할 수 있는 기능을 의미합니다. 파이썬의 가변 객체는 프로그래머가 값을 변경할 수 있는 객체를 가질 수 있도록 합니다. 일반적으로 데이터 모음을 저장하는 데 사용됩니다. 변이된 것으로 볼 수 있으며, 객체 내에서 적용할 수 있는 내부 상태가 변경되었습니다. 이 Python 자습서에서는 다음을 배우게 됩니다.불변 객체란?
파이썬에서 불변 객체는 시간이 지나도 값과 속성을 변경하지 않는 객체로 정의할 수 있습니다. 이러한 객체는 생성 및 초기화되면 영구적이며 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은 Python 프로그래밍 언어의 메모리에 있는 개체 주소를 반환하는 id라는 내장 함수를 제공합니다. 파이썬 코드:
z=200
id(z)
print("the id of object is",z)
산출:
the id of object is 9795360
위의 코드에서 id(obj)와 같은 구문을 갖는 id 함수는 파이썬 메모리에 있는 obj의 주소를 제공합니다. 여기에 z라는 객체가 있고 할당은 200입니다. 그런 다음 객체 z는 id(z)로 id 함수에 전달되고 Python은 객체의 주소를 9795360으로 전달합니다.
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 메서드의 사용을 보여줍니다. 파이썬 코드:
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 메서드를 사용하여 확인할 수 있습니다. 아래와 같이 파이썬에서 불변 객체의 개념을 설명하는 파이썬의 정수형 객체의 예를 들어봅시다: – 파이썬 코드: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
위에서 ""에 변화가 있음을 알 수 있다. 메커니즘이 어떻게 작동하는지 연구해 보겠습니다.
- 344로 "a"를 초기화해도 객체의 값에는 변화가 없습니다.
- 대신 새 개체가 만들어지고 "a"로 묶입니다.
- 244로 할당된 다른 개체는 더 이상 액세스할 수 없습니다.
- 위의 예는 정수 객체를 활용했습니다.
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'의 값은 [5,6,7] 사전에서 'y'로 추가 초기화됩니다.
- 이제 '의 값을 가정합니다.ㅏ' 사전의 키인 5와 7이 추가됩니다.
- 그런 다음 사전이 변형되었으며 두 가지 모두를 제공합니다. '엑스' 그리고 '와이' 위의 사전에 대한 값으로.
a = [5, 6,7]
b = [5, 6, 7]
my_dict = {a: 'x', b: 'y'}
print(my_dict)
따라서 프로그래밍 언어로서 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
위의 코드에서 목록인 첫 번째 요소는 변경 가능하지만 튜플은 변경할 수 없음을 알 수 있습니다. 튜플의 값은 변경할 수 없지만 튜플 내부에 있는 목록의 내용은 값을 변경할 수 있습니다. 따라서 이것은 불변 객체가 값을 변경하지 않지만 구성 요소의 값이 값을 변경한다는 예외를 발생시킵니다.
변경 가능한 개체와 변경할 수 없는 개체
변경 가능한 객체와 변경 불가능한 객체의 주요 차이점은 다음과 같습니다.변경 가능한 객체 | 불변 객체 |
객체 상태는 일단 생성되면 변경할 수 있습니다. | 객체 상태는 한 번 생성되면 변경할 수 없습니다. |
가변 객체는 본질적으로 스레드로부터 안전한 것으로 간주되지 않습니다. | 불변 객체는 본질적으로 스레드로부터 안전한 것으로 간주됩니다. |
가변 객체는 최종적으로 만들어지지 않으므로 프로그래머는 가변 객체를 계속 변경하고 동일한 객체를 사용할 수 있습니다. | 변경할 수 없는 객체가 생성될 때 클래스를 final로 만드는 것이 중요합니다. |
Python 불변 데이터 유형:
수업 | 설명 | 불변 여부 |
부울 | 부울 값 | 불변 |
정수 | 정수 값(크기는 임의적일 수 있음) | 불변 |
뜨다 | 부동 소수점 숫자 | 불변 |
목록 | 변경 가능한 개체의 시퀀스 | 변하기 쉬운 |
튜플 | 불변의 객체 시퀀스 | 불변 |
스트 | 문자/문자열 | 불변 |
세트 | 무질서한 성질을 가진 별개의 객체들의 집합 | 변하기 쉬운 |
겨울왕국 | 불변의 클래스 설정 | 불변 |
딕셔너리 | 사전 또는 연관 매핑 | 변하기 쉬운 |
'Coding' 카테고리의 다른 글
Python을 사용한 Facebook 로그인: FB 로그인 예 (0) | 2022.03.31 |
---|---|
Python의 Enumerate() 함수: 루프, 튜플, 문자열(예제) (0) | 2022.03.30 |
Python 2.x와 Python 3.x의 차이는 무엇일까? (0) | 2022.03.28 |
Selenium WebDriver 튜토리얼 : 테스트 자동화 시작하기 (0) | 2022.03.27 |
테슬라를 바꿔서 마그나의 자본에 가까운 이득을 얻다 (0) | 2022.03.26 |