2014-10-24 7 views
0

X = 3
X = 4파이썬 할당 또는 변수 바인딩?

번째 라인 입문 결합 또는 새로운 변수?

+1

"변수 바인딩"은 "[..] 변수 할당"에 대한 멋진 단어입니다. – user2864740

+1

"할당 문"과 "새로운 변수 바인딩"의 의미를 설명 할 수 있습니까? – BrenBarn

+0

내가 말하는 것은 파이썬이 x 변수의 값을 변경 시키거나 첫 번째 x를 버리고 새로운 변수를 만들고 새로운 값을 바인딩하는 것입니다. – Amen

답변

2

에서 발생 무엇인가

A. *x = some other value 

나이 :

B. x = malloc(something else) 

정답을이 - x를 재 할당 변수가 가리키는 객체가 다른 곳에서 참조 될 수 있고 변경하는 것이 예측할 수없는 방식으로 프로그램의 다른 부분에 영향을 줄 수 있기 때문에 B입니다. 따라서 파이썬은 변수 이름을 이전 구조 ("참조 카운터"를 줄임)에서 바인딩 해제하고 새 구조를 할당 한 다음 이름을이 새로운 변수에 바인딩합니다. 구조체의 참조 카운터가 0이되면 가비지가되고 어떤 시점에서 해제됩니다.

물론이 워크 플로는 내부적으로 매우 최적화되어 있으며 세부 정보는 개체 자체, 특정 인터프리터 (CPython, 자이 썬 등) 및 버전에 따라 다를 수 있습니다. 유저 랜드 파이썬 프로그래머로서, 우리는

x = old_object 

하고 다음

x = new_object 

어떤 식 으로든 "old_object을"영향을주지 않습니다 보장이있다.

2

차이는 없습니다. 파이썬에서 이름을 지정하는 것은 이름의 존재 여부와 관계없이 동일합니다. 내가 제대로 질문을 해석하고있어, 당신이 요구하는지

x = malloc(some object struct) 

무엇을 할 때 일어난다 :이 변수에 새 값을 할당 할 때, C 기간 (아주 기본)