1. General form
Assignment statement의 일반적인 형태는 다음과 같음.
varible = expression
2. 수행 순서
=
기호의 오른쪽의expression
을 evaluation함 (하나의 값으로 reduction)- 1번의 값에 해당하는 object (해당 값을 value로 가진 object)가 저장된 memory address (CPython에서는 해당 object의
ID
가 이에 해당)를variable
의 value(값)으로 넘겨줌. =
기호의 왼쪽에 있는variable
이 가지는 name이 최초로 등장한 경우, 해당 variable을 생성시키게 됨.- 만약 해당 name의
variable
이 있었다면 이variable
의 값이 2번에서 구한 결과 object의ID
로 변경됨.
3. Example
다음 코드를 예를 들어 설명한다.
아래 코드 다음 책의 2장에서 가져온 것임 : Practical Programming, Third Edition :An Introduction to Computer Science Using Python 3.6
>>> degrees_celsius = 26.0 + 5
>>> degrees_celsius
31.0
=
의 오른쪽의expression
인26.0 + 5
를 evaluation 해서31.0
이라는 값이 생성(type은 float임)되고
해당 object는 memory에 저장됨 (= memory address, 즉ID
가 생성됨)- 왼쪽의
variable
의 name인degrees_celsius
가 현재 namespace에 없을 경우,
해당 name의 variable을 생성하고 앞서 구한ID
를 값으로 가지게 하여31.0
의 object를 참조하게 한다.
이후 degrees_celsius
는 31.0
의 값을 가리키므로 exression
에서 사용될 경우 해당 값으로 치환되게 된다.
이를 그림으로 표현하면 다음과 같음.
위의 코드를 pytutor에서 확인하면 다음과 같음.
namespace (or frame)에서 관리되는 variable은 값으로 memory address (or ID)를 가짐으로써 실제 object들을 참조하게 됨.
Python에서
- Variable은 가리키는 object를 자유롭게 변경할 수 있고 사전에 Type을 가지고 선언될 필요가 없으나(Dynamic Typed Language),
- Object 자체는 한 번 생성되면 자신의 Type을 바꿀 수 없음(Strong Type).
주의: Assignment는 Expression이 아님.
할당은 statement이기 때문에 할당문을 조건식에 넣어서는 안됨.
Python 3.8 이후 Walrus Assignment ( = 대신 := 를 사용)가 도입되었고, 이는 할당도 수행하며 할당된 값으로 치환되는 expression으로 동작함.
if (n := len(my_list)) > 10:
print(f"List is too long ({n} elements, expected <= 10)")
4. 참고자료
[Python] Arithmetics, Variables, Types and Assignment
Numeric Type and Arithmetic in Python (+Augmented Assignment) https://dsaint31.tistory.com/516 [Python] Arithmetic in Python and Augmented Assigment 1. Precedence of Arithmetic Operations Higher ** > -(negation) > * = / = // = % > + = -(subtraction) Lower
ds31x.tistory.com
2023.06.12 - [Programming] - [Python] Expression vs. Statement
[Python] Expression vs. Statement
Expression (표현식) 프로그래밍 또는 컴퓨터 과학 분야에서 Expression은 흔히, function call, identifier, number, operator, literal 등으로 이루어진다. 표현식(or 수식) 으로 번역. 하나의 value로 reduce 될 수 있는 c
dsaint31.tistory.com
2023.06.12 - [Programming] - [Python] (Data) Type : Summary
[Python] (Data) Type : Summary
Programming에서 사용되는 모든 value 혹은 object 들의 종류 를 (data) type이라고 부름. 수학에서 숫자의 종류(type)를 실수, 정수, 자연수 등으로 나누는 것을 생각하면 쉽다. Programming에서는 문자들도 다
dsaint31.tistory.com
2023.06.11 - [Programming] - [Python] Dynamic Language vs. Static Language
[Python] Dynamic Language vs. Static Language
Python은 대표적인 dynamic langauge 이다. (흔히, dynamic language를 scripting language라고도 부름) Static (Typed) Language Programming Language들 중에서 comiler language들의 경우 대부분이 static language로서 variable을 사용
dsaint31.tistory.com
2023.06.13 - [Programming] - [Python] Strong Typing이란? with Object
[Python] Strong Typing이란? with Object
Python은 Strong Typing을 채택하고 있다. 이는 Object가 mutable type이냐 immutable type이냐에 상관없이 type이 변경되지 않음을 의미한다. 주의할 건, Object가 대상인 점이다. Python에서 Object는 memory에 할당된
dsaint31.tistory.com
2023.06.11 - [Programming] - [Basic] namespace, frame, and context
[Basic] namespace, frame, and context
Namespace 프로그래밍 등에서 나오는 namespace는 일종의 추상적인 개념: 변수와 함수, 클래스 등이 정의되고 사용될 수 있는 범위를 지칭함 variable(변수)들의 name과 vairable이 가르키는 실제 object들의 m
dsaint31.tistory.com
2023.06.13 - [Programming] - [Python] Variable (and Object)
[Python] Variable (and Object)
Variable (and Object)1. 정의Python에서 Variable은 Memory에 할당된 Object를 참조하는 Name (=Reference)에 불과하다.이 문서에서 Object는 Python에서의 Object로 type과 value, ID (CPython에서는 할당된 memory address), 그리
dsaint31.tistory.com
'Programming' 카테고리의 다른 글
[Python] Basic Methods of String (0) | 2023.06.21 |
---|---|
[Python] f-String (1) | 2023.06.21 |
[Python] Module Search Path and sys.path (0) | 2023.06.18 |
[Python] importlib.reload : module 재적재 (0) | 2023.06.18 |
[Python] Exception 처리 (0) | 2023.06.16 |