2014-09-05 4 views
0
내가 python language reference를 통과했다

에 따라 변경 가능한 불변으로 모두를 고려 튜플 수와 내가 건너 온 다음콘텐츠

우리는 정체성 바로 포함의 , 컨테이너의 가변성에 대해 이야기

객체가 함축되어 있습니다. 따라서 변경 불가능한 컨테이너 (튜플과 같은)에 변경 가능한 객체에 대한 참조가 포함되어있는 경우 해당 변경 가능한 객체가 변경되면 해당 값이 변경됩니다.

튜플이 포함 된 내용을 기반으로 변경 가능하고 변경 불가능한 것으로 간주 될 수 있다고 생각합니까? 예를 들어 튜플에 문자열 만 포함 된 경우 불변 일 수 있으며 목록과 같이 하나 이상의 변경 가능한 참조가 포함 된 경우 해당 튜플 자체가 변경 가능합니다.

답변

5

모든 tuple에는 고정 된 참조 목록이 포함되어 있습니다. 이러한 참조는 변경할 수 없기 때문에 tuple은 변경되지 않습니다. 참조 된 객체가 변경 가능한지 여부는 또 다른 이야기이지만 tuple의 범위를 벗어나므로 변경 가능한 객체를 참조하는 경우 tuple을 변경할 수 있다고 말하는 것은 정확하지 않습니다.

1

일반적으로 개념화되지 않았습니다. 튜플은 항상 불변이다. 포함하고있는 오브젝트는 변경 가능할 수도 있고 그렇지 않을 수도 있습니다. 마찬가지로 내화 상자가 있고 그 안에 용지를 넣으면 상자는 내화성을 갖지 않습니다 (용지가 아닌 경우에도 전체 상자 용지 콤보가 비 내화성으로 간주 될 수 있음).

+0

'some_tuple [0] .append (some_value) '는 상자를 열고 불을 붙이는 것과 같은 은유 적 표현입니까? –

+0

@PeterDeGlopper : 기본적으로 예 :-) – BrenBarn

1

튜플이 변경 가능하고 변경할 수 없다고 생각하면 정확합니까? 에 포함 된 내용을 기반으로 하시겠습니까?

튜플에는 고정 식별자가있는 고정 크기의 개체가 포함되어 있다고 생각해보십시오. 이 오브젝트들 중 어느 것도 다른 오브젝트로 대체 될 수 없습니다. 하지만 이것이 객체의 내용을 변경할 수 없다는 것을 의미하지는 않습니다.

엄밀히 말하면 경우

T = (O 1, 2 O, 3 O ... O N) 여기서 O O 내지 1 N 특정 개체이며 tuple T의 수명이 끝날 때까지 이러한 객체 중 하나 이상을 대체 할 수 없습니다. O i 다른 객체 O j 여기서 i < > j. 그러나 O i은 돌연변이를 일으킬 수 있습니다.

관련 문제