Variable (and Object)
1. 정의
Python에서 Variable은 Memory에 할당된 Ojbect를 참조하는 Name (=Reference)에 불과하다.
이 문서에서 Object는 Python에서의 Object로
type과 value, ID (CPython에서는 할당된 memory address), 그리고 reference count를
가지고 있는 데이터 덩어리를 가리키는 것으로 한정한다.
- Static Language에서의 Variable들이 type을 가지고 memory에 binding 되어있기 때문에,
- Static Language에서 variable들은 자신의 type와 다른 type의 memory 영역에 binding이 불가함.
- 다른 type의 memory영역과의 binding을 위해서는, (explicit) type casting이라는 처리가 필요.
- Python에서는 단순하게 Object를 가리키는 Name이 바로 Variable이다.
- 때문에 declaration 없이, 참조대상인 object를 가리키도록 해주는 assignment statement만으로 variable 생성이 가능하다.
- variable은 type을 가지고 있지 않음 (대상이 되는 object는 고정된 type을 가짐).
- 단순히 object를 가리키고만 있기 때문에 다른 object를 가르키도록 reassignment(재할당)하기가 매우 쉬움.
더 직관적으로 애기하면 Variable은 Value (=Object)를 가리키는 name임.
https://dsaint31.me/mkdocs_site/python/oop/oop_0_01_Object/#object
2023.06.13 - [Programming] - [Python] Strong Typing이란? with Object
2. Naming Rules (convention이 아님!)
- variable은 영어대소문자와 underscore, 숫자 들의 조합을 사용할 수 있음 (module도 같은 규칙을 따름)
- 단, Python이 예약하고 있는 keywords 는 사용불가함.
- variable의 첫글자가 숫자가 올 수 없음.
- 숫자로 시작하는 module 의 경우, import등이 되질 않음.
- underscore로 시작하는 variable들은 일반적으로 특별한 의미를 가지고 있음을 관례적으로 나타냄.
variable은 위의 규칙 때문에 하나의 word로 구성되게 되며, 대소문자를 구분한다는 점을 꼭 기억하자
http://ds31x.blogspot.com/2023/07/etc-naming-convention.html
2023.06.11 - [Programming] - [Python] Keyword란? (Soft Keyword 포함)
3. Example
다음 그림은 integer literal 7
(=Object임) 을 variable a
에 할당하고, variable b
,c
들이 같은 Object를 참조하도록 할당된 상태를 보여줌.
- Frame (Namespace의 구현물)에서 variable들이 존재하고, 이들은 동일한 object
7
을 가리키는 reference에 불과하다.
만약 a = 'reassignment'
를 수행하면 다음과 같이 a
는 다른 object를 가리키게 된다 (마치 type이 변한 것처럼 보일 수 있음).
4. 관련 URLs
https://pythontutor.com/visualize.html
2023.06.12 - [Programming] - [Python] (Data) Type : Summary
2023.02.20 - [Programming] - [Basic] Literal
'Programming' 카테고리의 다른 글
[Python] Exception 처리 (0) | 2023.06.16 |
---|---|
[Python] Strong Typing이란? with Object (1) | 2023.06.13 |
[Python] Arithmetic in Python and Augmented Assigment (0) | 2023.06.12 |
[Python] (Data) Type: Summary (0) | 2023.06.12 |
[Python] Expression vs. Statement (0) | 2023.06.12 |