[Python] Assignment (Basic)

2023. 6. 20. 23:53·Programming
728x90
728x90

1. General form

Assignment statement의 일반적인 형태는 다음과 같음.

varible = expression

# variable = other_variable

2. 수행 순서

  1. = 기호의 오른쪽의 expression을 evaluation함 (하나의 값으로 reduction)
  2. 1번의 값에 해당하는 object (해당 값을 value로 가진 object)가 저장된 memory address (CPython에서는 해당 object의 ID가 이에 해당)를 variable의 value(값)으로 넘겨줌.
  3. = 기호의 왼쪽에 있는 variable이 가지는 name이 최초로 등장한 경우, 해당 variable을 생성시키게 됨.
  4. 만약 해당 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으로 동작함.

단, 일반 단독 statement로는 사용할 수 없음

# 조건문안에서는 사용가능.
if (n := len(my_list)) > 10:
    print(f"List is too long ({n} elements, expected <= 10)")
    
# 단독 statement로는 사용 못함.
x := 3 # not working!

4. 참고자료

https://ds31x.tistory.com/194

 

[Python] Arithmetic, Variables, Types and Assignment

Numeric Type and Arithmetic in Python (+Augmented Assignment)https://dsaint31.tistory.com/516 -(negation) > * = / = // = % > + = -(subtraction) Lower우선순위를 기억하는 것도 중요하지만, 헷갈리면 그냥 parentheses로 묶어주면 된다

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 될 수 있는 code

dsaint31.tistory.com

 

2023.06.12 - [Programming] - [Python] (Data) Type : Summary

 

[Python] (Data) Type: Summary

1. Type 이란?Programming에서 사용되는 모든 value 혹은 object 들의 종류 를 (data) type이라고 부름.수학에서 숫자의 종류(type)를 실수, 정수, 자연수 등으로 나누는 것을 생각하면 쉽다.Programming에서는 문

dsaint31.tistory.com

 

2023.06.11 - [Programming] - [Python] Dynamic Language vs. Static Language

 

[Python] Dynamic Typed Language vs. Static Typed Language

Python은 대표적인 dynamic (typed) langauge 이다. (dynamic language는 대부분 interpreter language 임.) 좀 더 엄밀하게 애기하면,Dynamic Language란 특정 동작이나 사항들이 runtime(실행 시간)에 결정되는 특징을 가

dsaint31.tistory.com

 

2023.06.13 - [Programming] - [Python] Strong Typing이란? with Object

 

[Python] Strong Typing이란? with Object

Strong Typing 이란?Python은 object에 대해 Strong Typing을 채택하고 있다.이는 Object가 mutable type이냐 immutable type이냐에 상관없이 type이 변경되지 않음을 의미한다.  주의할 건, Object가 대상인 점이다. Str

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
'Programming' 카테고리의 다른 글
  • [Python] Basic Methods of String
  • [Python] f-String
  • [Python] Module Search Path and sys.path
  • [Python] importlib.reload : module 재적재
dsaint31x
dsaint31x
    반응형
    250x250
  • dsaint31x
    Dsaint31's blog
    dsaint31x
  • 전체
    오늘
    어제
    • 분류 전체보기 (748)
      • Private Life (13)
      • Programming (194)
        • DIP (112)
        • ML (26)
      • Computer (119)
        • CE (53)
        • ETC (33)
        • CUDA (3)
        • Blog, Markdown, Latex (4)
        • Linux (9)
      • ... (351)
        • Signals and Systems (103)
        • Math (172)
        • Linear Algebra (33)
        • Physics (42)
        • 인성세미나 (1)
      • 정리필요. (54)
        • 의료기기의 이해 (6)
        • PET, MRI and so on. (1)
        • PET Study 2009 (1)
        • 방사선 장해방호 (4)
        • 방사선 생물학 (3)
        • 방사선 계측 (9)
        • 기타 방사능관련 (3)
        • 고시 (9)
        • 정리 (18)
      • RI (0)
      • 원자력,방사능 관련법 (2)
  • 블로그 메뉴

    • Math
    • Programming
    • SS
    • DIP
  • 링크

    • Convex Optimization For All
  • 공지사항

    • Test
    • PET Study 2009
    • 기타 방사능관련.
  • 인기 글

  • 태그

    linear algebra
    Probability
    Optimization
    SIGNAL
    numpy
    math
    opencv
    signals_and_systems
    Vector
    DIP
    Term
    Programming
    fourier transform
    인허가제도
    SS
    function
    Python
    signal_and_system
    Convolution
    cv2
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
dsaint31x
[Python] Assignment (Basic)
상단으로

티스토리툴바