[Python] Strong Typing이란? with Object

2023. 6. 13. 17:38·Programming
728x90
728x90

https://medium.com/android-news/magic-lies-here-statically-typed-vs-dynamically-typed-languages-d151c7f95e2b

Strong Typing 이란?

Python은 object에 대해 Strong Typing을 채택하고 있다.

이는 Object가
mutable type이냐 immutable type이냐에 상관없이
type이 변경되지 않음
을 의미한다. 

 

주의할 건, Object가 대상인 점이다. 


Strong Typing을 채택한 Python에서의 관련 특징은 다음과 같음:

  • 자동 변환 제한:
    • Python은 정수와 부동소수점(float) 간의 연산처럼 안전한 변환만 자동으로 수행.
    • 하지만 정수와 문자열처럼 다른 종류의 타입 간의 변환은 자동으로 이루어지지 않음.
  •  명시적 변환 필요:
    • 다른 타입 간의 연산이나 변환이 필요할 때 Explicit Casting이 요구됨.
  •  유효하지 않은 변환은 오류 발생:
    • 잘못된 변환 시 TypeError 또는 ValueError가 발생.

Python에서 Object란

Python에서 Object는 memory에 할당된 일종의 데이터 덩어리(chunk)로 최소한 다음을 가지고 있어야 한다.

 

1. Value

2. Unique ID (CPython에선 memory address) : id(target_obj)

3. Type (type에 의해 같은 value라도 다르게 해석됨) : type(target_obj)

4. Reference Count (Garbage Collection을 위해 필요.) : sys.getrefcount(target_obj)

 

동시에, Python 을 dynamically typed language이기 때문에
variable의 경우 type과 함께 선언되지 않고도 사용가능하며,
중간에 다른 type의 object를 자유롭게 reference할 수 있다. 


결론

요약하면,

  • Strong Typed 라는 관점은 Object에 대한 것이고,
  • Dynamic (Typing) Language라는 관점은 Variable에 대한 것이다.

같이보면 좋은 자료들

https://medium.com/android-news/magic-lies-here-statically-typed-vs-dynamically-typed-languages-d151c7f95e2b

 

Magic lies here - Statically vs Dynamically Typed Languages

Type Checking

medium.com

 

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

 

[Python] Dynamic Language vs. Static Language

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

dsaint31.tistory.com

 

https://dsaint31.me/mkdocs_site/python/oop/oop_0_01_Object/#object

 

BME228

Object (객체) 란 보거나 만질 수 있는 사물 (공간을 차지하고 있는 물질적인 사물) OOP에선 Concept(개념) 도 Object 임. Application(응용프로그램)에서, 명확한 한계와 의미를 가지고 있는 사물 이나 개념,

dsaint31.me

 

'Programming' 카테고리의 다른 글

[Python] importlib.reload : module 재적재  (0) 2023.06.18
[Python] Exception 처리  (0) 2023.06.16
[Python] Variable (and Object)  (0) 2023.06.13
[Python] Arithmetic in Python and Augmented Assignment  (0) 2023.06.12
[Python] (Data) Type: Summary  (0) 2023.06.12
'Programming' 카테고리의 다른 글
  • [Python] importlib.reload : module 재적재
  • [Python] Exception 처리
  • [Python] Variable (and Object)
  • [Python] Arithmetic in Python and Augmented Assignment
dsaint31x
dsaint31x
    반응형
    250x250
  • dsaint31x
    Dsaint31's blog
    dsaint31x
  • 전체
    오늘
    어제
    • 분류 전체보기 (742)
      • Private Life (13)
      • Programming (188)
        • DIP (106)
        • 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
    • 기타 방사능관련.
  • 인기 글

  • 태그

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

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
dsaint31x
[Python] Strong Typing이란? with Object
상단으로

티스토리툴바