Python 데이터 모델과 Python 대상 모델에 대한 총결산

데이터 모델 = = 객체 모델


Python 공식 문서는'Python 데이터 모델'이라고 하는데 대부분의 Python 서적 작가들은'Python 대상 모델'이라고 하는데 이것은 하나의 뜻으로'컴퓨터 프로그래밍 언어에서 대상의 속성'을 나타낸다.이 말은 약간 추상적이다. 대상이 Python이 데이터에 대한 추상임을 알면 Python에서 만물은 모두 대상이다.
공식 문서는 파이썬 프로그램의 모든 데이터는 대상이나 대상 간의 관계로 표시된다고 엄밀하게 말한다.

대상 3요소


대상은 세 가지 요소가 있는데 그것이 바로 번호(identity), 유형(type), 값(value)이다.

identity


번호는 객체의 메모리 주소이며 생성된 후에는 변경되지 않습니다.is 연산자는 두 객체의 번호를 비교하는 데 사용됩니다.id () 함수는 대상 번호의 정수 표시를 되돌려줍니다.
identity도 신분, 대상 신분으로 번역할 수 있습니다.

type


유형은 대상에 대해 어떤 조작을 할 수 있는지를 결정하고 대상의 가능한 값도 정의한다. 예를 들어 intbool 유형의 값은 다르다.type() 함수는 객체 유형을 반환합니다.많은 사람들이 Python을 약한 유형의 언어로 오해할 수 있다. 사실 Python은 강한 유형의 언어이다. 이 오해의 진실한 원인은 Python이 컴파일할 필요가 없고 변수의 유형을 미리 알 필요가 없으며 실행할 때 유형을 검사하는 것이다. 이를 동적 언어라고 해야 한다.
JavaScript는 Python에서 1 + "2"가 실행되지 않고 JavaScript에서 실행될 수 있는 약한 유형의 언어입니다.
유형은 생성된 후에도 변경되지 않습니다. 유형 변환은 가능하지만 실제로 새 객체가 생성됩니다.

a = 1
print(id(a))
print(id(str(a)))
print(id(a))
결과는 다음과 같습니다.

140715000207008
2136059506160
140715000207008

value


대상 3요소 중 유일하게 바꿀 수 있는 것은 값뿐이다.홈페이지에는 올바른 쓸데없는 말이 있다. 값을 바꿀 수 있는 대상은 mutable, 값을 바꿀 수 없는 대상은 immutable (가변할 수 없는) 이다.그 의미는 불변 대상의 값이 가변 대상에 대한 인용일 때 대상의 가변성을 어떻게 판단해야 하는가에 있다.결론은 불변 대상은 여전히 불변적이다. 왜냐하면 이 인용은 변할 수 없기 때문이다. 그러나 우리는 보통 이 불변 대상의 값이 변할 수 있다고 생각한다. 특히 대상 용기.대상 유형도 가변 여부를 결정합니다. 예를 들어 numbers, strings, tuples 은 가변적이지 않고 dictionaries, lists 는 가변적입니다.

객체 컨테이너


일부 대상은 다른 대상에 대한 인용을 포함하는데 이를 containers 대상 용기라고 한다. 예를 들어 tuples, lists, dictionaries 등이다.대부분의 경우, 우리는 용기의 값을 말하고, 인용된 대상의 값을 말하며, 인용 번호가 아니다.그러나 용기의 가변성을 논의할 때 용기에 직접 포함된 인용 번호만 가리킨다.예를 들어 tuple 는 변할 수 없습니다. 만약 변할 수 있는 대상에 대한 인용을 포함한다면 이 변할 수 있는 대상이 바뀔 때 용기의 값도 바뀝니다.

객체 회수


대상은 현시적으로 소각되지 않지만 쓰레기 회수로 간주됩니다. 대상 인용이 존재하지 않는다면 이것이 바로 Python 쓰레기 회수 메커니즘입니다!쓰레기 회수 메커니즘이 비교적 복잡하다. 예를 들어 순환 인용은 실제로 이미 사용되지 않았지만 인용이 존재한다. 알고리즘 규칙과 관련된, Python 진급을 다 쓰고 Python 원리를 쓸 때 진일보한 연구를 한다.
Python 쓰레기 회수 메커니즘은 은탄이 아니기 때문에 모든 문제를 해결할 수 없습니다. 따라서 외부 자원을 인용합니다. 예를 들어 파일을 연 후에 우리는 현식close를 주의하여 자원이 시종일관 메모리를 차지하고 방출되지 않아 메모리 유출을 방지해야 합니다.close는 수동 호출close() 방법 외에도 with를 사용하여 자동close를 사용할 수 있습니다.
try 사용...except는 대상을 계속 생존시킬 수 있습니다.

유형이 모든 것을 결정한다


객체의 유형은 객체의 모든 비헤이비어를 거의 결정합니다. 예를 들어 변경할 수 없는 유형의 경우

a = 1
b = 1
a와 b는 같은 값이 1인 대상을 가리킬 수도 있고 서로 다른 값이 1인 대상을 가리킬 수도 있다. 이것은 구체적인 실현에 달려 있다.
그러나 소프트 유형의 경우:

c = []
d = []
c와 d는 반드시 두 개의 다른 단독 빈 목록을 가리킨다.
주의 c = d = []는 같은 대상을 c와 d에 부여합니다.

작은 매듭


Python 데이터 모델은 흔히 말하는 대상 모델로 만물은 모두 대상이며 번호, 유형, 값 세 가지 요소가 있다.대상 모델을 이해한 후에Python의 또 다른 중요한 개념은 바로 데이터 구조이다.

참고 자료:


https://docs.python.org/3/reference/datamodel.html
이상은 Python 데이터 모델과 Python 대상 모델의 관련 총결에 대한 상세한 내용입니다. 더 많은python 데이터 모델과 대상 모델에 대한 자료는 저희 다른 관련 글에 주목하세요!

좋은 웹페이지 즐겨찾기