]> git.ipfire.org Git - thirdparty/fastapi/fastapi.git/commitdiff
🌐 Add Korean translation for `docs/ko/docs/python-types.md` (#2267)
authorJRIM <jrim.choi@gmail.com>
Mon, 22 Jan 2024 19:34:47 +0000 (04:34 +0900)
committerGitHub <noreply@github.com>
Mon, 22 Jan 2024 19:34:47 +0000 (14:34 -0500)
docs/ko/docs/python-types.md [new file with mode: 0644]

diff --git a/docs/ko/docs/python-types.md b/docs/ko/docs/python-types.md
new file mode 100644 (file)
index 0000000..16b93a7
--- /dev/null
@@ -0,0 +1,315 @@
+# νŒŒμ΄μ¬ νƒ€μž… μ†Œκ°œ
+
+νŒŒμ΄μ¬μ€ μ„ νƒμ μœΌλ‘œ "νƒ€μž… νžŒνŠΈ(type hints)"λ₯Ό μ§€μ›ν•©λ‹ˆλ‹€.
+
+μ΄λŸ¬ν•œ **νƒ€μž… νžŒνŠΈ**듀은 λ³€μˆ˜μ˜ <abbr title="예λ₯Ό λ“€λ©΄: str, int, float, bool">νƒ€μž…</abbr>을 μ„ μ–Έν•  μˆ˜ μžˆκ²Œ ν•΄μ£ΌλŠ” νŠΉμˆ˜ν•œ κ΅¬λ¬Έμž…λ‹ˆλ‹€.
+
+λ³€μˆ˜μ˜ νƒ€μž…을 μ§€μ •ν•˜λ©΄ μ—λ””터와 νˆ΄μ΄ λ” λ§Žμ€ λ„움을 μ€„ μˆ˜ μžˆκ²Œ λ©λ‹ˆλ‹€.
+
+이 λ¬Έμ„œλŠ” νŒŒμ΄μ¬ νƒ€μž… νžŒνŠΈμ— λŒ€ν•œ **λΉ λ₯Έ μžμŠ΅μ„œ / λ‚΄μš©ν™˜κΈ°** μˆ˜μ€€μ˜ λ¬Έμ„œμž…λ‹ˆλ‹€. μ—¬κΈ°μ„œλŠ” **FastAPI**λ₯Ό μ“°κΈ° μœ„ν•œ μ΅œμ†Œν•œμ˜ λ‚΄μš©λ§Œμ„ λ‹€λ£Ήλ‹ˆλ‹€.
+
+**FastAPI**λŠ” νƒ€μž… νžŒνŠΈμ— κΈ°λ°˜μ„ λ‘κ³  μžˆμœΌλ©°, μ΄λŠ” λ§Žμ€ μž₯점과 μ΄μ΅μ΄ μžˆμŠ΅λ‹ˆλ‹€.
+
+비둝 **FastAPI**λ₯Ό μ“°μ§€ μ•ŠλŠ”λ‹€κ³  ν•˜λ”라도, μ‘°κΈˆμ΄λΌλ„ μ•Œμ•„두면 λ„움이 λ  κ²ƒμž…λ‹ˆλ‹€.
+
+!!! note "μ°Έκ³ "
+    νŒŒμ΄μ¬μ— λŠ₯μˆ™ν•˜μ…”μ„œ νƒ€μž… νžŒνŠΈμ— λŒ€ν•΄ λͺ¨λ‘ μ•„μ‹ λ‹€λ©΄, λ‹€μŒ μ±•ν„°λ‘œ κ±΄λ„ˆλ›°μ„Έμš”.
+
+## λ™κΈ° λΆ€μ—¬
+
+κ°„λ‹¨ν•œ μ˜ˆμ œλΆ€ν„° μ‹œμž‘ν•΄λ΄…μ‹œλ‹€:
+
+```Python
+{!../../../docs_src/python_types/tutorial001.py!}
+```
+
+이 ν”„λ‘œκ·Έλž¨μ„ μ‹€ν–‰ν•œ κ²°κ³Όκ°’:
+
+```
+John Doe
+```
+
+ν•¨μˆ˜λŠ” μ•„λž˜μ™€ κ°™μ΄ μ‹€ν–‰λ©λ‹ˆλ‹€:
+
+* `first_name`κ³Ό `last_name`λ₯Ό λ°›μŠ΅λ‹ˆλ‹€.
+* `title()`둜 κ° μ²« λ¬Έμžλ₯Ό λŒ€λ¬Έμžλ‘œ λ³€ν™˜μ‹œν‚΅λ‹ˆλ‹€.
+* λ‘ λ‹¨μ–΄λ₯Ό μ€‘간에 κ³΅λ°±μ„ λ‘κ³  <abbr title="두 κ°œλ₯Ό ν•˜λ‚˜λ‘œ μ°¨λ‘€μ°¨λ‘€ μ΄μ–΄μ§€κ²Œ ν•˜λ‹€">μ—°κ²°</abbr>ν•©λ‹ˆλ‹€.
+
+```Python hl_lines="2"
+{!../../../docs_src/python_types/tutorial001.py!}
+```
+
+### μ½”λ“œ μˆ˜μ •
+
+이건 λ§€μš° κ°„λ‹¨ν•œ ν”„λ‘œκ·Έλž¨μž…λ‹ˆλ‹€.
+
+그런데 μ²˜μŒλΆ€ν„° μž‘μ„±ν•œλ‹€κ³  μƒκ°μ„ ν•΄λ΄…μ‹œλ‹€.
+
+μ—¬λŸ¬λΆ„μ€ λ§€κ°œλ³€μˆ˜λ₯Ό μ€€λΉ„ν–ˆκ³ , ν•¨μˆ˜λ₯Ό μ •μ˜ν•˜κΈ° μ‹œμž‘ν–ˆμ„ κ²λ‹ˆλ‹€.
+
+μ΄λ•Œ "첫 κΈ€μžλ₯Ό λŒ€λ¬Έμžλ‘œ λ°”κΎΈλŠ” ν•¨μˆ˜"λ₯Ό ν˜ΈμΆœν•΄μ•Ό ν•©λ‹ˆλ‹€.
+
+`upper`μ˜€λ‚˜? μ•„λ‹ˆλ©΄ `uppercase`? `first_uppercase`? `capitalize`?
+
+κ·Έλ•Œ κ°œλ°œμžλ“€μ˜ μ˜€λžœ μΉœκ΅¬, μ—λ””ν„° μžλ™μ™„성을 μ‹œλ„ν•΄λ΄…λ‹ˆλ‹€.
+
+당신은 `first_name`λ₯Ό μž…λ ₯ν•œ λ’€ μ (`.`)을 μž…λ ₯ν•˜κ³  μžλ™μ™„성을 μΌœκΈ° μœ„ν•΄μ„œ `Ctrl+Space`λ₯Ό λˆŒλ €μŠ΅λ‹ˆλ‹€.
+
+ν•˜μ§€λ§Œ μŠ¬ν”„κ²Œλ„ μ•„λ¬΄λŸ° λ„움이 λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€:
+
+<img src="/img/python-types/image01.png">
+
+### νƒ€μž… μΆ”κ°€ν•˜κΈ°
+
+이전 λ²„μ „μ—μ„œ ν•œ μ€„λ§Œ μˆ˜μ •ν•΄λ΄…μ‹œλ‹€.
+
+μ €ν¬λŠ” μ΄ ν•¨μˆ˜μ˜ λ§€κ°œλ³€μˆ˜ λΆ€λΆ„:
+
+```Python
+    first_name, last_name
+```
+
+을 μ•„λž˜μ™€ κ°™μ΄ λ°”κΏ€ κ²λ‹ˆλ‹€:
+
+```Python
+    first_name: str, last_name: str
+```
+
+이게 λ‹€μž…λ‹ˆλ‹€.
+
+이게 "νƒ€μž… νžŒνŠΈ"μž…λ‹ˆλ‹€:
+
+```Python hl_lines="1"
+{!../../../docs_src/python_types/tutorial002.py!}
+```
+
+νƒ€μž…νžŒνŠΈλŠ” λ‹€μŒκ³Ό κ°™μ΄ κΈ°λ³Έ κ°’을 μ„ μ–Έν•˜λŠ” κ²ƒκ³ΌλŠ” λ‹€λ¦…λ‹ˆλ‹€:
+
+```Python
+    first_name="john", last_name="doe"
+```
+
+μ΄λŠ” λ‹€λ₯Έ κ²ƒμž…λ‹ˆλ‹€.
+
+λ“±ν˜Έ(`=`) λŒ€μ‹  μ½œλ‘ (`:`)을 μ“°κ³  μžˆμŠ΅λ‹ˆλ‹€.
+
+일반적으둜 νƒ€μž…νžŒνŠΈλ₯Ό μΆ”κ°€ν•œλ‹€κ³  ν•΄μ„œ νŠΉλ³„ν•˜κ²Œ μ–΄λ–€ μΌμ΄ μΌμ–΄λ‚˜μ§€λ„ μ•ŠμŠ΅λ‹ˆλ‹€.
+
+κ·Έλ ‡μ§€λ§Œ μ΄μ œ, λ‹€μ‹œ ν•¨μˆ˜λ₯Ό λ§Œλ“œλŠ” λ„쀑이라고 μƒκ°ν•΄λ΄…μ‹œλ‹€. λ‹€λ§Œ μ΄λ²ˆμ—” νƒ€μž… νžŒνŠΈκ°€ μžˆμŠ΅λ‹ˆλ‹€.
+
+같은 μƒν™©μ—μ„œ `Ctrl+Space`둜 μžλ™μ™„성을 μž‘λ™μ‹œν‚€λ©΄,
+
+<img src="/img/python-types/image02.png">
+
+μ•„λž˜μ™€ κ°™μ΄ "κ·Έλ ‡μ§€!"ν•˜λŠ” μ˜΅μ…˜μ΄ λ‚˜μ˜¬λ•ŒκΉŒμ§€ μŠ€ν¬λ‘€μ„ λ‚΄λ €μ„œ λ³Ό μˆ˜ μžˆμŠ΅λ‹ˆλ‹€:
+
+<img src="/img/python-types/image03.png">
+
+## λ” ν° λ™κΈ°λΆ€μ—¬
+
+μ•„λž˜ ν•¨μˆ˜λ₯Ό λ³΄λ©΄, μ΄λ―Έ νƒ€μž… νžŒνŠΈκ°€ μ μš©λ˜μ–΄ μžˆλŠ” κ±Έ λ³Ό μˆ˜ μžˆμŠ΅λ‹ˆλ‹€:
+
+```Python hl_lines="1"
+{!../../../docs_src/python_types/tutorial003.py!}
+```
+
+νŽΈμ§‘κΈ°κ°€ λ³€μˆ˜μ˜ νƒ€μž…을 μ•Œκ³  μžˆκΈ° λ•Œλ¬Έμ—, μžλ™μ™„μ„± λΏ μ•„λ‹ˆλΌ μ—λŸ¬λ„ ν™•인할 μˆ˜ μžˆμŠ΅λ‹ˆλ‹€:
+
+<img src="/img/python-types/image04.png">
+
+이제 κ³ μ³μ•Όν•˜λŠ” κ±Έ μ•ŒκΈ° λ•Œλ¬Έμ—, `age`λ₯Ό `str(age)`κ³Ό κ°™μ΄ λ¬Έμžμ—΄λ‘œ λ°”κΎΈκ²Œ λ©λ‹ˆλ‹€:
+
+```Python hl_lines="2"
+{!../../../docs_src/python_types/tutorial004.py!}
+```
+
+## νƒ€μž… μ„ μ–Έ
+
+방금 ν•¨μˆ˜μ˜ λ§€κ°œλ³€μˆ˜λ‘œμ¨ νƒ€μž… νžŒνŠΈλ₯Ό μ„ μ–Έν•˜λŠ” μ£Όμš” μž₯μ†Œλ₯Ό λ³΄μ•˜μŠ΅λ‹ˆλ‹€.
+
+이 μœ„μΉ˜λŠ” μ—¬λŸ¬λΆ„이 **FastAPI**와 ν•¨κ»˜ μ΄λ₯Ό μ‚¬μš©ν•˜λŠ” μ£Όμš” μž₯μ†Œμž…λ‹ˆλ‹€.
+
+### Simple νƒ€μž…
+
+`str`뿐 μ•„λ‹ˆλΌ λͺ¨λ“  νŒŒμ΄μ¬ ν‘œμ€€ νƒ€μž…을 μ„ μ–Έν•  μˆ˜ μžˆμŠ΅λ‹ˆλ‹€.
+
+예λ₯Ό λ“€λ©΄:
+
+* `int`
+* `float`
+* `bool`
+* `bytes`
+
+```Python hl_lines="1"
+{!../../../docs_src/python_types/tutorial005.py!}
+```
+
+### νƒ€μž… λ§€κ°œλ³€μˆ˜λ₯Ό ν™œμš©ν•œ Generic(μ œλ„€λ¦­) νƒ€μž…
+
+`dict`, `list`, `set`, `tuple`κ³Ό κ°™μ€ κ°’을 μ €μž₯ν•  μˆ˜ μžˆλŠ” λ°μ΄ν„° κ΅¬μ‘°κ°€ μžˆκ³ , λ‚΄λΆ€μ˜ κ°’은 κ°μžμ˜ νƒ€μž…을 κ°€μ§ˆ μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.
+
+νƒ€μž…κ³Ό λ‚΄λΆ€ νƒ€μž…을 μ„ μ–Έν•˜κΈ° μœ„ν•΄μ„œλŠ” νŒŒμ΄μ¬ ν‘œμ€€ λͺ¨λ“ˆμΈ `typing`을 μ΄μš©ν•΄μ•Ό ν•©λ‹ˆλ‹€.
+
+κ΅¬μ²΄μ μœΌλ‘œλŠ” μ•„λž˜ νƒ€μž… νžŒνŠΈλ₯Ό μ§€μ›ν•©λ‹ˆλ‹€.
+
+#### `List`
+
+예λ₯Ό λ“€λ©΄, `str`의 `list`인 λ³€μˆ˜λ₯Ό μ •μ˜ν•΄λ΄…μ‹œλ‹€.
+
+`typing`μ—μ„œ  `List`(λŒ€λ¬Έμž `L`)λ₯Ό import ν•©λ‹ˆλ‹€.
+
+```Python hl_lines="1"
+{!../../../docs_src/python_types/tutorial006.py!}
+```
+
+콜둠(`:`) λ¬Έλ²•을 μ΄μš©ν•˜μ—¬ λ³€μˆ˜λ₯Ό μ„ μ–Έν•©λ‹ˆλ‹€.
+
+νƒ€μž…μœΌλ‘œλŠ” `List`λ₯Ό λ„£μ–΄μ€λ‹ˆλ‹€.
+
+μ΄λ•Œ λ°°μ—΄μ€ λ‚΄λΆ€ νƒ€μž…을 ν¬ν•¨ν•˜λŠ” νƒ€μž…이기 λ•Œλ¬Έμ— λŒ€κ΄„ν˜Έ μ•ˆμ— λ„£μ–΄μ€λ‹ˆλ‹€.
+
+```Python hl_lines="4"
+{!../../../docs_src/python_types/tutorial006.py!}
+```
+
+!!! tip "팁"
+    λŒ€κ΄„ν˜Έ μ•ˆμ˜ λ‚΄λΆ€ νƒ€μž…은 "νƒ€μž… λ§€κ°œλ³€μˆ˜(type paramters)"라고 ν•©λ‹ˆλ‹€.
+
+    μ΄λ²ˆ μ˜ˆμ œμ—μ„œλŠ” `str`이 `List`에 λ“€μ–΄κ°„ νƒ€μž… λ§€κ°œλ³€μˆ˜ μž…λ‹ˆλ‹€.
+
+μ΄λŠ” "`items`은 `list`인데, λ°°μ—΄μ— λ“€μ–΄μžˆλŠ” μ•„μ΄ν…œ κ°κ°μ€ `str`이닀"λΌλŠ” λœ»μž…λ‹ˆλ‹€.
+
+μ΄λ ‡κ²Œ ν•¨μœΌλ‘œμ¨, μ—λ””ν„°λŠ” λ°°μ—΄μ— λ“€μ–΄μžˆλŠ” μ•„μ΄ν…œμ„ μ²˜λ¦¬ν• λ•Œλ„ λ„움을 μ€„ μˆ˜ μžˆκ²Œ λ©λ‹ˆλ‹€:
+
+<img src="/img/python-types/image05.png">
+
+νƒ€μž…μ΄ μ—†μœΌλ©΄ μ΄κ±΄ κ±°μ˜ λΆˆκ°€λŠ₯μ΄λ‚˜ λ‹€λ¦„ μ—†μŠ΅λ‹ˆλ‹€.
+
+λ³€μˆ˜ `item`은 `items`의 κ°œλ³„ μš”μ†ŒλΌλŠ” μ‚¬μ‹€μ„ μ•Œμ•„λ‘μ„Έμš”.
+
+그리고 μ—λ””ν„°λŠ” κ³„속 `str`λΌλŠ” μ‚¬μ‹€μ„ μ•Œκ³  λ„μ™€μ€λ‹ˆλ‹€.
+
+#### `Tuple`κ³Ό `Set`
+
+`tuple`κ³Ό `set`도 λ™μΌν•˜κ²Œ μ„ μ–Έν•  μˆ˜ μžˆμŠ΅λ‹ˆλ‹€.
+
+```Python hl_lines="1  4"
+{!../../../docs_src/python_types/tutorial007.py!}
+```
+
+이 λœ»μ€ μ•„λž˜μ™€ κ°™μŠ΅λ‹ˆλ‹€:
+
+* λ³€μˆ˜ `items_t`λŠ”, μ°¨λ‘€λŒ€λ‘œ `int`, `int`, `str`인 `tuple`이닀.
+* λ³€μˆ˜ `items_s`λŠ”, κ° μ•„μ΄ν…œμ΄ `bytes`인 `set`이닀.
+
+#### `Dict`
+
+`dict`λ₯Ό μ„ μ–Έν•˜λ €λ©΄ μ»΄λ§ˆλ‘œ κ΅¬λΆ„λœ 2개의 νŒŒλΌλ―Έν„°κ°€ ν•„μš”ν•©λ‹ˆλ‹€.
+
+첫 λ²ˆμ§Έ λ§€κ°œλ³€μˆ˜λŠ” `dict`의 ν‚€(key)이고,
+
+두 λ²ˆμ§Έ λ§€κ°œλ³€μˆ˜λŠ”  `dict`의 κ°’(value)μž…λ‹ˆλ‹€.
+
+```Python hl_lines="1  4"
+{!../../../docs_src/python_types/tutorial008.py!}
+```
+
+이 λœ»μ€ μ•„λž˜μ™€ κ°™μŠ΅λ‹ˆλ‹€:
+
+* λ³€μˆ˜ `prices`λŠ” `dict`이닀:
+    * `dict`의 ν‚€(key)λŠ” `str`νƒ€μž…μ΄λ‹€. (각 μ•„μ΄ν…œμ˜ μ΄λ¦„(name))
+    * `dict`의 κ°’(value)λŠ” `float`νƒ€μž…μ΄λ‹€. (각 μ•„μ΄ν…œμ˜ κ°€κ²©(price))
+
+#### `Optional`
+
+`str`κ³Ό κ°™μ΄ νƒ€μž…을 μ„ μ–Έν•  λ•Œ `Optional`을 μ“Έ μˆ˜λ„ μžˆλŠ”λ°, "선택적(Optional)"μ΄κΈ°λ•Œλ¬Έμ— `None`도 λ  μˆ˜ μžˆμŠ΅λ‹ˆλ‹€:
+
+```Python hl_lines="1  4"
+{!../../../docs_src/python_types/tutorial009.py!}
+```
+
+`Optional[str]`을 `str` λŒ€μ‹  μ“°κ²Œ λ˜λ©΄, νŠΉμ • κ°’이 μ‹€μ œλ‘œλŠ” `None`이 λ  μˆ˜λ„ μžˆλŠ”λ° ν•­μƒ `str`이라고 κ°€μ •ν•˜λŠ” μƒν™©μ—μ„œ μ—λ””ν„°κ°€ μ—λŸ¬λ₯Ό μ°Ύκ²Œ λ„와쀄 μˆ˜ μžˆμŠ΅λ‹ˆλ‹€.
+
+#### Generic(μ œλ„€λ¦­) νƒ€μž…
+
+이 νƒ€μž…은 λŒ€κ΄„ν˜Έ μ•ˆμ— λ§€κ°œλ³€μˆ˜λ₯Ό κ°€μ§€λ©°, μ’…λ₯˜λŠ”:
+
+* `List`
+* `Tuple`
+* `Set`
+* `Dict`
+* `Optional`
+* ...λ“±λ“±
+
+μœ„μ™€ κ°™μ€ νƒ€μž…은 **Generic(μ œλ„€λ¦­) νƒ€μž…** ν˜Ήμ€ **Generics(μ œλ„€λ¦­μŠ€)**라고 λΆˆλ¦½λ‹ˆλ‹€.
+
+### νƒ€μž…μœΌλ‘œμ„œμ˜ ν΄λž˜μŠ€
+
+λ³€μˆ˜μ˜ νƒ€μž…μœΌλ‘œ ν΄λž˜μŠ€λ₯Ό μ„ μ–Έν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.
+
+이름(name)을 κ°€μ§„ `Person` ν΄λž˜μŠ€κ°€ μžˆλ‹€κ³  ν•΄λ΄…μ‹œλ‹€.
+
+```Python hl_lines="1-3"
+{!../../../docs_src/python_types/tutorial010.py!}
+```
+
+κ·Έλ ‡κ²Œ ν•˜λ©΄ λ³€μˆ˜λ₯Ό `Person`이라고 μ„ μ–Έν•  μˆ˜ μžˆκ²Œ λ©λ‹ˆλ‹€.
+
+```Python hl_lines="6"
+{!../../../docs_src/python_types/tutorial010.py!}
+```
+
+그리고 μ—­μ‹œλ‚˜ λͺ¨λ“  μ—λ””ν„° λ„움을 λ°›κ²Œ λ˜κ² μ£ .
+
+<img src="/img/python-types/image06.png">
+
+## Pydantic λͺ¨λΈ
+
+<a href="https://pydantic-docs.helpmanual.io/" class="external-link" target="_blank">Pydantic</a>은 λ°μ΄ν„° κ²€μ¦(Validation)을 μœ„ν•œ νŒŒμ΄μ¬ λΌμ΄λΈŒλŸ¬λ¦¬μž…λ‹ˆλ‹€.
+
+당신은 μ†μ„±λ“€μ„ ν¬ν•¨ν•œ ν΄λž˜μŠ€ ν˜•νƒœλ‘œ "λͺ¨μ–‘(shape)"을 μ„ μ–Έν•  μˆ˜ μžˆμŠ΅λ‹ˆλ‹€.
+
+그리고 κ° μ†μ„±μ€ νƒ€μž…을 κ°€μ§€κ³  μžˆμŠ΅λ‹ˆλ‹€.
+
+이 ν΄λž˜μŠ€λ₯Ό ν™œμš©ν•˜μ—¬μ„œ κ°’을 κ°€μ§€κ³  μžˆλŠ” μΈμŠ€ν„΄μŠ€λ₯Ό λ§Œλ“€κ²Œ λ˜λ©΄, ν•„μš”ν•œ κ²½μš°μ—λŠ” μ λ‹Ήν•œ νƒ€μž…μœΌλ‘œ λ³€ν™˜κΉŒμ§€ μ‹œν‚€κΈ°λ„ ν•˜μ—¬ λ°μ΄ν„°κ°€ ν¬ν•¨λœ κ°μ²΄λ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€.
+
+그리고 κ²°κ³Ό κ°μ²΄μ— λŒ€ν•΄μ„œλŠ” μ—λ””ν„°μ˜ λ„움을 λ°›μ„ μˆ˜ μžˆκ²Œ λ©λ‹ˆλ‹€.
+
+Pydantic κ³΅μ‹ λ¬Έμ„œ μ˜ˆμ‹œ:
+
+```Python
+{!../../../docs_src/python_types/tutorial011.py!}
+```
+
+!!! info "정보"
+    Pydantic<에 λŒ€ν•΄ λ” λ°°μš°κ³  μ‹Άλ‹€λ©΄ <a href="https://pydantic-docs.helpmanual.io/" class="external-link" target="_blank">곡식 λ¬Έμ„œ</a>λ₯Ό μ°Έκ³ ν•˜μ„Έμš”.</a>
+
+
+**FastAPI**λŠ” λͺ¨λ‘ Pydantic을 κΈ°λ°˜μœΌλ‘œ λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.
+
+이 λͺ¨λ“  κ²ƒμ΄ μ‹€μ œλ‘œ μ–΄λ–»κ²Œ μ‚¬μš©λ˜λŠ”μ§€μ— λŒ€ν•΄μ„œλŠ” [μžμŠ΅μ„œ - μ‚¬μš©μž μ•ˆλ‚΄μ„œ](tutorial/index.md){.internal-link target=_blank} μ—μ„œ λ” λ§Žμ΄ ν™•μΈν•˜μ‹€ μˆ˜ μžˆμŠ΅λ‹ˆλ‹€.
+
+## **FastAPI**μ—μ„œμ˜ νƒ€μž… νžŒνŠΈ
+
+**FastAPI**λŠ” μ—¬λŸ¬ λΆ€λΆ„μ—μ„œ νƒ€μž… νžŒνŠΈμ˜ μž₯점을 μ·¨ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.
+
+**FastAPI**μ—μ„œ νƒ€μž… νžŒνŠΈμ™€ ν•¨κ»˜ λ§€κ°œλ³€μˆ˜λ₯Ό μ„ μ–Έν•˜λ©΄ μž₯점은:
+
+* **에디터 λ„움**.
+* **νƒ€μž… ν™•인**.
+
+...그리고 **FastAPI**λŠ” κ°™μ€ μ •μ˜λ₯Ό μ•„λž˜μ—λ„ μ μš©ν•©λ‹ˆλ‹€:
+
+* **μš”κ΅¬μ‚¬ν•­ μ •μ˜**: μš”μ²­ κ²½λ‘œ λ§€κ°œλ³€μˆ˜, μΏΌλ¦¬ λ§€κ°œλ³€μˆ˜, ν—€λ”, λ°”λ””, μ˜μ‘΄μ„± λ“±.
+* **데이터 λ³€ν™˜**: μš”μ²­μ—μ„œ μš”κ΅¬ν•œ νƒ€μž…μœΌλ‘œ.
+* **데이터 κ²€μ¦**: κ° μš”μ²­λ§ˆλ‹€:
+    * λ°μ΄ν„°κ°€ μœ νš¨ν•˜μ§€ μ•Šμ€ κ²½μš°μ—λŠ” **μžλ™μœΌλ‘œ μ—λŸ¬**λ₯Ό λ°œμƒν•©λ‹ˆλ‹€.
+* OpenAPIλ₯Ό ν™œμš©ν•œ **API λ¬Έμ„œν™”**:
+    * μžλ™μœΌλ‘œ μƒν˜Έμž‘μš©ν•˜λŠ” μœ μ € μΈν„°νŽ˜μ΄μŠ€μ— μ“°μ΄κ²Œ λ©λ‹ˆλ‹€.
+
+μœ„ λ‚΄μš©μ΄ λ‹€μ†Œ μΆ”상적일 μˆ˜λ„ μžˆμ§€λ§Œ, κ±±μ •λ§ˆμ„Έμš”. [μžμŠ΅μ„œ - μ‚¬μš©μž μ•ˆλ‚΄μ„œ](tutorial/index.md){.internal-link target=_blank}μ—μ„œ μ „λΆ€ ν™•인 κ°€λŠ₯ν•©λ‹ˆλ‹€.
+
+κ°€μž₯ μ€‘μš”ν•œ κ±΄, ν‘œμ€€ νŒŒμ΄μ¬ νƒ€μž…을 ν•œ κ³³μ—μ„œ(클래슀λ₯Ό λ”ν•˜κ±°λ‚˜, λ°μ½”λ ˆμ΄ν„° μ‚¬μš©ν•˜λŠ” λŒ€μ‹ ) μ‚¬μš©ν•¨μœΌλ‘œμ¨ **FastAPI**κ°€ λ‹Ήμ‹ μ„ μœ„ν•΄ λ§Žμ€ μΌμ„ ν•΄μ€€λ‹€λŠ” μ‚¬μ‹€μ΄μ£ .
+
+!!! info "정보"
+    λ§Œμ•½ λͺ¨λ“  μžμŠ΅μ„œλ₯Ό λ‹€ λ³΄μ•˜μŒμ—λ„ νƒ€μž…에 λŒ€ν•΄μ„œ λ” λ³΄κ³ μž λ°©λ¬Έν•œ κ²½μš°μ—λŠ” <a href="https://mypy.readthedocs.io/en/latest/cheat_sheet_py3.html" class="external-link" target="_blank">`mypy`μ—μ„œ μ œκ³΅ν•˜λŠ” "cheat sheet"</a>이 μ’‹μ€ μžλ£Œκ°€ λ  κ²λ‹ˆλ‹€.