Python-type-annotation.md
Last updated
Last updated
νλ‘κ·Έλλ° μΈμ΄μλ λ€μν μλ£νμ΄ μμ΅λλ€. μ΄λ¬ν μλ£νλ€μ νλμ© λ³μμ 맀νλμ΄μ§λλ€. κ·Έλ°λ° μμμΉ λͺ»ν μλ£νμΌλ‘ λ°μ΄ν°κ° λ€μ΄μ¨λ€λ©΄ μ΄λ μ€λ₯λ₯Ό μ λ°ν©λλ€. λν νλ‘κ·Έλλ° ν λ λ³μμ νμ μ λͺ μνλ€λ©΄ μ’ λ ꡬ쑰μ μΌλ‘ μ€κ³ ν μ μμ΅λλ€. λ°λΌμ λ€μν νλ‘κ·Έλλ° μΈμ΄(typescript, kotlin, python λ±)μμ Annotationλ₯Ό μ§μν©λλ€.
μ€λμ Pythonμμ μ§μνλ typehintμ λν΄μ μμλ³΄κ² μ΅λλ€.
Type Annotationκ³Ό typing ν¨ν€μ§ λͺ¨λ μ΄λ€ νμ μΈμ§ μ½λμμμ λͺ μνκ³ μλν° λ 벨μμ κ²½κ³ λ₯Ό λμμ€ λΏμ λλ€. μ΄μ λν μμΈμ²λ¦¬λ μ§μ ꡬνν΄μΌν©λλ€.
μμ μ½λμ κ°μ΄ ν¨μμ νλΌλ―Έν°μ λ°νκ°μ νμ μ μ§μ ν΄μ€ μ μμ΅λλ€.
κ·Έλ λ€λ©΄ μμ ν¨μμ
μ΄λ κ² μ§μ ν νμ κ³Ό λ€λ₯Έ νμ μ λ°μ΄ν°λ₯Ό νλΌλ―Έν°λ‘ μ μ‘νλ©΄ μ΄λ»κ² λ κΉμ?
λ λ¬Έμμ΄λ‘ μ°κ²°λμ΄ μ μΆλ ₯λλ²λ¦½λλ€. νμ§λ§ Pycharmκ³Ό κ°μ μλν°μμλ μ΄λ κ² νμλ©λλ€.
μ΄λ Python Type Annotationμ λ¨μ§ μ½λμμμ λͺ
μνκ³ μλν° λ 벨μμ κ²½κ³ λ₯Ό λμμ€ λΏμ΄κΈ° λλ¬Έμ
λλ€. λ°λΌμ μ΄μ λν μμΈμ²λ¦¬λ μ§μ ꡬνν΄μΌν©λλ€. νμ§λ§ mypy
λΌλ ν¨ν€μ§λ₯Ό μ¬μ©νλ©΄ μ΄λ₯Ό ν
μ€νΈ ν μ μμ΅λλ€.
pipλ‘ κ°λ¨ν μ€μΉν μ μκ³
mypyλ‘ μμ μ½λλ₯Ό μ€νμν€λ©΄ νμ μ 체ν¬νκ³ λ¬Έμ κ° μλ€λ©΄ μ€λ₯λ₯Ό λ°μμν΅λλ€. λ¨μν ν μ€νΈ μ΄κΈ° λλ¬Έμ λ¬Έμ κ° μλ€κ³ ν΄λ μ무κ²λ μΆλ ₯λμ§ μμ΅λλ€.
typing
λ§μ½ int, str κ°μ΄ λ¨μν νμ
μ΄ μλ 볡μ‘ν νμ
μ μ¬μ©νλ€λ©΄ typing
ν¨ν€μ§λ₯Ό μ¬μ©νλ©΄ λ©λλ€.
ν΄λΉ ν¨ν€μ§λ Pythonμμ μ§μνλ ν¨ν€μ§λ‘ 3.5
λ²μ μ΄νμ νμ΄μ¬μμλ κΈ°λ³ΈμΌλ‘ μ 곡λ©λλ€.
λ§μ½ μ μλ§ ν¬ν¨νλ 리μ€νΈλ₯Ό λ°λλ€λ©΄
List λΏλ§ μλλΌ Dict, Tuple λ±λ± λ€μν νμ μ μ§μν©λλ€.
New Type
μ μ¬μ©νμ¬ νμ
μ λ³μΉμ λΆμΌ μ μμ΅λλ€.
Callable
ν¨μμΈμμ λ€λ₯Έ ν¨μλ₯Ό λ겨μ€λλ Callable
μ μ¬μ©νλ©΄ λ©λλ€.
μ¬μ© : Callable[[μΈμνμ
리μ€νΈ], λ°ν νμ
]
νμ
TypeVar
, Union
, Optional
TypeVar
λ₯Ό μ¬μ©νλ©΄ μ λ€λ¦ νμ
μ ꡬνν μ μμ΅λλ€.
μλ typing ν¨ν€μ§μ TypeVar λͺ¨λμ λ΄μ© μ€ μΌλΆ μ
λλ€. μ¬λ¬ μλ£ν μ€ νλλ₯Ό λ°μμΌ ν λλ TypeVar
μ μ¬λ¬ νμ
μ μ λ¬νκ±°λ Union
,Optional
μ μ¬μ©νλ©΄ λ©λλ€. μ΄λ νμμ μΈ μΈμκ° μλλΌλ©΄ Optional
μ μ¬μ©ν©λλ€.
μ΄λ κ² Pythonμμ typehintλ₯Ό μ¬μ©ν μ μλ λ°©λ²μ λν΄μ μμ보μμ΅λλ€.