Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
130 changes: 130 additions & 0 deletions docs/ko/docs/tutorial/extra-data-types.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,130 @@
# μΆ”κ°€ 데이터 μžλ£Œν˜•

μ§€κΈˆκΉŒμ§€ 일반적인 데이터 μžλ£Œν˜•μ„ μ‚¬μš©ν–ˆμŠ΅λ‹ˆλ‹€. 예λ₯Ό λ“€λ©΄ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€:

* `int`
* `float`
* `str`
* `bool`

ν•˜μ§€λ§Œ 더 λ³΅μž‘ν•œ 데이터 μžλ£Œν˜• λ˜ν•œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

그리고 μ§€κΈˆκΉŒμ§€μ™€ 같은 κΈ°λŠ₯듀을 μ—¬μ „νžˆ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

* ν›Œλ₯­ν•œ νŽΈμ§‘κΈ° 지원.
* λ“€μ–΄μ˜€λŠ” μš”μ²­μ˜ 데이터 λ³€ν™˜.
* 응닡 λ°μ΄ν„°μ˜ 데이터 λ³€ν™˜.
* 데이터 검증.
* μžλ™ μ–΄λ…Έν…Œμ΄μ…˜κ³Ό λ¬Έμ„œν™”.

## λ‹€λ₯Έ 데이터 μžλ£Œν˜•

μ•„λž˜μ˜ 좔가적인 데이터 μžλ£Œν˜•μ„ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€:

* `UUID`:
* ν‘œμ€€ "λ²”μš© 고유 μ‹λ³„μž"둜, λ§Žμ€ λ°μ΄ν„°λ² μ΄μŠ€μ™€ μ‹œμŠ€ν…œμ—μ„œ ID둜 μ‚¬μš©λ©λ‹ˆλ‹€.
* μš”μ²­κ³Ό μ‘λ‹΅μ—μ„œ `str`둜 ν‘œν˜„λ©λ‹ˆλ‹€.
* `datetime.datetime`:
* 파이썬의 `datetime.datetime`.
* μš”μ²­κ³Ό μ‘λ‹΅μ—μ„œ `2008-09-15T15:53:00+05:00`와 같은 ISO 8601 ν˜•μ‹μ˜ `str`둜 ν‘œν˜„λ©λ‹ˆλ‹€.
* `datetime.date`:
* 파이썬의 `datetime.date`.
* μš”μ²­κ³Ό μ‘λ‹΅μ—μ„œ `2008-09-15`와 같은 ISO 8601 ν˜•μ‹μ˜ `str`둜 ν‘œν˜„λ©λ‹ˆλ‹€.
* `datetime.time`:
* 파이썬의 `datetime.time`.
* μš”μ²­κ³Ό μ‘λ‹΅μ—μ„œ `14:23:55.003`와 같은 ISO 8601 ν˜•μ‹μ˜ `str`둜 ν‘œν˜„λ©λ‹ˆλ‹€.
* `datetime.timedelta`:
* 파이썬의 `datetime.timedelta`.
* μš”μ²­κ³Ό μ‘λ‹΅μ—μ„œ 전체 초(seconds)의 `float`둜 ν‘œν˜„λ©λ‹ˆλ‹€.
* Pydantic은 "ISO 8601 μ‹œμ°¨ 인코딩"으둜 ν‘œν˜„ν•˜λŠ” 것 λ˜ν•œ ν—ˆμš©ν•©λ‹ˆλ‹€. <a href="https://docs.pydantic.dev/latest/concepts/serialization/#json_encoders" class="external-link" target="_blank">더 λ§Žμ€ μ •λ³΄λŠ” 이 λ¬Έμ„œμ—μ„œ ν™•μΈν•˜μ‹­μ‹œμ˜€.</a>.
* `frozenset`:
* μš”μ²­κ³Ό μ‘λ‹΅μ—μ„œ `set`와 λ™μΌν•˜κ²Œ μ·¨κΈ‰λ©λ‹ˆλ‹€:
* μš”μ²­ μ‹œ, 리슀트λ₯Ό 읽어 쀑볡을 μ œκ±°ν•˜κ³  `set`둜 λ³€ν™˜ν•©λ‹ˆλ‹€.
* 응닡 μ‹œ, `set`λŠ” `list`둜 λ³€ν™˜λ©λ‹ˆλ‹€.
* μƒμ„±λœ μŠ€ν‚€λ§ˆλŠ” (JSON μŠ€ν‚€λ§ˆμ˜ `uniqueItems`λ₯Ό μ΄μš©ν•΄) `set`의 값이 κ³ μœ ν•¨μ„ λͺ…μ‹œν•©λ‹ˆλ‹€.
* `bytes`:
* ν‘œμ€€ 파이썬의 `bytes`.
* μš”μ²­κ³Ό μ‘λ‹΅μ—μ„œ `str`둜 μ·¨κΈ‰λ©λ‹ˆλ‹€.
* μƒμ„±λœ μŠ€ν‚€λ§ˆλŠ” 이것이 `binary` "ν˜•μ‹"의 `str`μž„μ„ λͺ…μ‹œν•©λ‹ˆλ‹€.
* `Decimal`:
* ν‘œμ€€ 파이썬의 `Decimal`.
* μš”μ²­κ³Ό μ‘λ‹΅μ—μ„œ `float`와 λ™μΌν•˜κ²Œ λ‹€λ€„μ§‘λ‹ˆλ‹€.
* μ—¬κΈ°μ—μ„œ λͺ¨λ“  μœ νš¨ν•œ pydantic 데이터 μžλ£Œν˜•μ„ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€: <a href="https://docs.pydantic.dev/latest/usage/types/types/" class="external-link" target="_blank">Pydantic 데이터 μžλ£Œν˜•</a>.

## μ˜ˆμ‹œ

μœ„μ˜ λͺ‡λͺ‡ μžλ£Œν˜•μ„ λ§€κ°œλ³€μˆ˜λ‘œ μ‚¬μš©ν•˜λŠ” *경둜 μž‘λ™* μ˜ˆμ‹œμž…λ‹ˆλ‹€.

=== "Python 3.10+"

```Python hl_lines="1 3 12-16"
{!> ../../../docs_src/extra_data_types/tutorial001_an_py310.py!}
```

=== "Python 3.9+"

```Python hl_lines="1 3 12-16"
{!> ../../../docs_src/extra_data_types/tutorial001_an_py39.py!}
```

=== "Python 3.8+"

```Python hl_lines="1 3 13-17"
{!> ../../../docs_src/extra_data_types/tutorial001_an.py!}
```

=== "Python 3.10+ non-Annotated"

!!! tip
Prefer to use the `Annotated` version if possible.

```Python hl_lines="1 2 11-15"
{!> ../../../docs_src/extra_data_types/tutorial001_py310.py!}
```

=== "Python 3.8+ non-Annotated"

!!! tip
Prefer to use the `Annotated` version if possible.

```Python hl_lines="1 2 12-16"
{!> ../../../docs_src/extra_data_types/tutorial001.py!}
```

ν•¨μˆ˜ μ•ˆμ˜ λ§€κ°œλ³€μˆ˜κ°€ κ·Έλ“€λ§Œμ˜ 데이터 μžλ£Œν˜•μ„ κ°€μ§€κ³  있으며, 예λ₯Ό λ“€μ–΄, λ‹€μŒκ³Ό 같이 λ‚ μ§œλ₯Ό μ‘°μž‘ν•  수 μžˆμŒμ„ μ°Έκ³ ν•˜μ‹­μ‹œμ˜€:

=== "Python 3.10+"

```Python hl_lines="18-19"
{!> ../../../docs_src/extra_data_types/tutorial001_an_py310.py!}
```

=== "Python 3.9+"

```Python hl_lines="18-19"
{!> ../../../docs_src/extra_data_types/tutorial001_an_py39.py!}
```

=== "Python 3.8+"

```Python hl_lines="19-20"
{!> ../../../docs_src/extra_data_types/tutorial001_an.py!}
```

=== "Python 3.10+ non-Annotated"

!!! tip
Prefer to use the `Annotated` version if possible.

```Python hl_lines="17-18"
{!> ../../../docs_src/extra_data_types/tutorial001_py310.py!}
```

=== "Python 3.8+ non-Annotated"

!!! tip
Prefer to use the `Annotated` version if possible.

```Python hl_lines="18-19"
{!> ../../../docs_src/extra_data_types/tutorial001.py!}
```