์ค๋ ์ฐ๋ฆฌ๋ Dropbox๊ฐ Python ์ฝ๋์ ์ ํ ์ ์ด๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์๋ฃ ๋ฒ์ญ์ ์ฒซ ๋ฒ์งธ ๋ถ๋ถ์ ์ฌ๋ฌ๋ถ์๊ฒ ์๋ ค๋๋ฆฝ๋๋ค.
Dropbox๋ Python์ผ๋ก ๋ง์ ๊ฒ์ ์์ฑํฉ๋๋ค. ๋ฐฑ์๋ ์๋น์ค์ ๋ฐ์คํฌํฑ ํด๋ผ์ด์ธํธ ์ ํ๋ฆฌ์ผ์ด์ ๋ชจ๋์ ๋งค์ฐ ๊ด๋ฒ์ํ๊ฒ ์ฌ์ฉ๋๋ ์ธ์ด์ ๋๋ค. ์ฐ๋ฆฌ๋ ๋ํ Go, TypeScript ๋ฐ Rust๋ฅผ ๋ง์ด ์ฌ์ฉํ์ง๋ง Python์ด ์ฐ๋ฆฌ์ ์ฃผ์ ์ธ์ด์ ๋๋ค. ์ฐ๋ฆฌ์ ๊ท๋ชจ์ ์๋ฐฑ๋ง ์ค์ Python ์ฝ๋์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์๋ ๊ฒ์ ๊ณ ๋ คํ ๋ ๊ทธ๋ฌํ ์ฝ๋์ ๋์ ํ์ดํ์ด ๋ถํ์ํ๊ฒ ์ดํด๋ฅผ ๋ณต์กํ๊ฒ ๋ง๋ค๊ณ ๋ ธ๋ ์์ฐ์ฑ์ ์ฌ๊ฐํ ์ํฅ์ ๋ฏธ์น๊ธฐ ์์ํ๋ค๋ ๊ฒ์ด ๋ฐํ์ก์ต๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ์ํํ๊ธฐ ์ํด mypy๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ๋๋ฅผ ์ ์ ์ ํ ๊ฒ์ฌ๋ก ์ ์ง์ ์ผ๋ก ์ ํํ๊ธฐ ์์ํ์ต๋๋ค. ์ด๊ฒ์ ์๋ง๋ Python์์ ๊ฐ์ฅ ๋๋ฆฌ ์ฌ์ฉ๋๋ ๋ ๋ฆฝ ์คํํ ์ ํ ๊ฒ์ฌ ์์คํ ์ผ ๊ฒ์ ๋๋ค. Mypy๋ ์คํ ์์ค ํ๋ก์ ํธ์ด๋ฉฐ ์ฃผ์ ๊ฐ๋ฐ์๋ Dropbox์์ ์์ ํฉ๋๋ค.
Dropbox๋ ์ด๋ฌํ ๊ท๋ชจ๋ก Python ์ฝ๋์ ์ ์ ์ ํ ๊ฒ์ฌ๋ฅผ ๊ตฌํํ ์ต์ด์ ํ์ฌ ์ค ํ๋์ ๋๋ค. Mypy๋ ์์ฆ ์์ฒ ๊ฐ์ ํ๋ก์ ํธ์์ ์ฌ์ฉ๋ฉ๋๋ค. ์ด ๋๊ตฌ๋ "์ ํฌ์์ ํ ์คํธ๋์์ต๋๋ค." ์ฐ๋ฆฌ๋ ์ง๊ธ์ ์์น์ ๋๋ฌํ๊ธฐ๊น์ง ๋จผ ๊ธธ์ ์์ต๋๋ค. ๊ทธ ๊ณผ์ ์์ ๋ง์ ์คํจํ ์ฌ์ ๊ณผ ์คํจํ ์คํ์ด ์์์ต๋๋ค. ์ด ๊ฒ์๋ฌผ์ ๋ด ์ฐ๊ตฌ ํ๋ก์ ํธ์ ์ผ๋ถ๋ก ์์๋ ๋ถ์์ ํ ์์๋ถํฐ Python์ผ๋ก ์์ฑํ๋ ์๋ง์ ๊ฐ๋ฐ์์๊ฒ ์ ํ ๊ฒ์ฌ ๋ฐ ์ ํ ํํธ๊ฐ ์ผ๋ฐํ๋๋ ํ์ฌ๊น์ง Python์ ์ ์ ์ ํ ๊ฒ์ฌ์ ์ญ์ฌ๋ฅผ ๋ค๋ฃน๋๋ค. ์ด๋ฌํ ๋ฉ์ปค๋์ฆ์ ์ด์ IDE ๋ฐ ์ฝ๋ ๋ถ์๊ธฐ์ ๊ฐ์ ๋ง์ ๋๊ตฌ์์ ์ง์๋ฉ๋๋ค.
โ
์ ํ ๊ฒ์ฌ๊ฐ ํ์ํ ์ด์ ๋ ๋ฌด์์ ๋๊น?
๋์ ์ผ๋ก ์ ๋ ฅ๋๋ Python์ ์ฌ์ฉํด ๋ณธ ์ ์ด ์๋ค๋ฉด ์ต๊ทผ์ ์ ์ ์ ๋ ฅ๊ณผ mypy์ ๋ํด ์ ๊ทธ๋ ๊ฒ ์๋์ค๋ฌ์ด์ง ํผ๋์ค๋ฌ์ธ ์ ์์ต๋๋ค. ๋๋ ๋์ ํ์ดํ ๋๋ฌธ์ Python์ ์ข์ํ ์๋ ์์ต๋๋ค. ์ ์ ํ์ดํ์ ๊ฐ์น์ ๋ํ ํต์ฌ์ ์๋ฃจ์ ์ ๊ท๋ชจ์ ๋๋ค. ํ๋ก์ ํธ๊ฐ ํด์๋ก ์ ์ ํ์ดํ์ด ๋ ๋ง์ด ํ์ํ๊ณ ๊ฒฐ๊ตญ ๋ ๋ง์ด ํ์ํฉ๋๋ค.
ํน์ ํ๋ก์ ํธ๊ฐ ์๋ง ์ค์ ํฌ๊ธฐ์ ๋๋ฌํ๊ณ ์ฌ๋ฌ ํ๋ก๊ทธ๋๋จธ๊ฐ ์์ ํ๊ณ ์๋ ๊ฒ์ผ๋ก ๋ฐํ์ก๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. ๊ฒฝํ์ ๋ฐํ์ผ๋ก ๋น์ทํ ํ๋ก์ ํธ๋ฅผ ์ดํด๋ณด๋ฉด ์ฝ๋๋ฅผ ์ดํดํ๋ ๊ฒ์ด ๊ฐ๋ฐ์์ ์์ฐ์ฑ์ ์ ์งํ๋ ์ด์ ๊ฐ ๋ ๊ฒ์ด๋ผ๊ณ ๋งํ ์ ์์ต๋๋ค. ์ ํ ์ฃผ์์ด ์์ผ๋ฉด ์๋ฅผ ๋ค์ด ํจ์์ ์ ๋ฌํ ์ธ์ ๋๋ ํจ์๊ฐ ๋ฐํํ ์ ์๋ ์ ํ์ ํ์ ํ๊ธฐ ์ด๋ ค์ธ ์ ์์ต๋๋ค. ๋ค์์ ์ ํ ์ฃผ์์ ์ฌ์ฉํ์ง ์๊ณ ๋๋ตํ๊ธฐ ์ด๋ ค์ด ์ผ๋ฐ์ ์ธ ์ง๋ฌธ์ ๋๋ค.
- ์ด ํจ์๊ฐ ๋ฐํํ ์ ์์ต๋๊น?
None
? - ์ด ์ฃผ์ฅ์ ๋ฌด์์ด์ด์ผ ํ๋๊ฐ?
items
? - ์์ฑ ์ ํ์ ๋ฌด์์
๋๊น
id
:int
๊ทธ๊ฒ์,str
, ์๋๋ฉด ์ฌ์ฉ์ ์ ์ ์ ํ? - ์ด ์ธ์๋ ๋ชฉ๋ก์ด์ด์ผ ํฉ๋๊น? ํํ์ ์ ๋ฌํ ์ ์์ต๋๊น?
๋ค์ ์ ํ ์ฃผ์ ์ฝ๋ ์ค๋ํซ์ ๋ณด๊ณ ์ ์ฌํ ์ง๋ฌธ์ ๋ตํ๋ ค๊ณ ํ๋ฉด ์ด๊ฒ์ด ๊ฐ์ฅ ๊ฐ๋จํ ์์ ์์ ์ ์ ์์ต๋๋ค.
class Resource:
id: bytes
...
def read_metadata(self,
items: Sequence[str]) -> Dict[str, MetadataItem]:
...
read_metadata
๋์์ค์ง ์๋๋คNone
, ๋ฐํ ์ ํ์ด ์๋๊ธฐ ๋๋ฌธ์Optional[โฆ]
.- ๋
ผ์
items
์ผ๋ จ์ ๋ผ์ธ์ ๋๋ค. ์์๋ก ๋ฐ๋ณตํ ์ ์์ต๋๋ค. - ์์ฑ
id
๋ฐ์ดํธ ๋ฌธ์์ด์ ๋๋ค.
์ด์์ ์ธ ์ธ๊ณ์์๋ ๊ทธ๋ฌํ ๋ชจ๋ ๋ฏธ๋ฌํจ์ด ๋ด์ฅ๋ ๋ฌธ์(docstring)์ ์ค๋ช ๋์ด ์๋ค๊ณ ๊ธฐ๋ํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ฒฝํ์ ์ด๋ฌํ ๋ฌธ์๊ฐ ์์ ํด์ผ ํ๋ ์ฝ๋์์ ์ข ์ข ๊ด์ฐฐ๋์ง ์๋๋ค๋ ์ฌ์ค์ ๋ํ ๋ง์ ์๋ฅผ ์ ๊ณตํฉ๋๋ค. ๊ทธ๋ฌํ ๋ฌธ์๊ฐ ์ฝ๋์ ์๋๋ผ๋ ์ ๋์ ์ธ ์ ํ์ฑ์ ๊ธฐ๋ํ ์๋ ์์ต๋๋ค. ์ด ๋ฌธ์๋ ๋ชจํธํ๊ณ ๋ถ์ ํํ๋ฉฐ ์คํด์ ์ฌ์ง๊ฐ ์์ ์ ์์ต๋๋ค. ๋๊ท๋ชจ ํ์ด๋ ๋๊ท๋ชจ ํ๋ก์ ํธ์์ ์ด ๋ฌธ์ ๋ ๊ทน๋๋ก ์ฌ๊ฐํด์ง ์ ์์ต๋๋ค.
Python์ ํ๋ก์ ํธ์ ์ด๊ธฐ ๋๋ ์ค๊ฐ ๋จ๊ณ์์ ํ์ํ์ง๋ง ์ด๋ ์์ ์์ ์ฑ๊ณต์ ์ธ ํ๋ก์ ํธ์ Python์ ์ฌ์ฉํ๋ ํ์ฌ๋ "์ ์ ์ผ๋ก ์ ํ์ด ์ง์ ๋ ์ธ์ด๋ก ๋ชจ๋ ๊ฒ์ ๋ค์ ์์ฑํด์ผ ํฉ๋๊น?"๋ผ๋ ์ค์ํ ์ง๋ฌธ์ ์ง๋ฉดํ ์ ์์ต๋๋ค.
mypy์ ๊ฐ์ ์ ํ ๊ฒ์ฌ ์์คํ ์ ๊ฐ๋ฐ์์๊ฒ ์ ํ์ ์ค๋ช ํ๊ธฐ ์ํ ๊ณต์ ์ธ์ด๋ฅผ ์ ๊ณตํ๊ณ ์ ํ ์ ์ธ์ด ํ๋ก๊ทธ๋จ ๊ตฌํ๊ณผ ์ผ์นํ๋์ง ํ์ธ(๋ฐ ์ ํ์ ์ผ๋ก ์กด์ฌ ์ฌ๋ถ๋ฅผ ํ์ธ)ํ์ฌ ์์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ด๋ฌํ ์์คํ ์ ์ ์คํ๊ฒ ํ์ธ๋ ๋ฌธ์์ ๊ฐ์ ๊ฒ์ ๋ง์๋๋ก ์ฌ์ฉํ ์ ์๋ค๊ณ ๋งํ ์ ์์ต๋๋ค.
์ด๋ฌํ ์์คํ ์ ์ฌ์ฉํ๋ฉด ๋ค๋ฅธ ์ด์ ์ด ์์ผ๋ฉฐ ์ด๋ฏธ ์์ ํ ์ฌ์ํ์ง ์์ต๋๋ค.
- ์ ํ ๊ฒ์ฌ ์์คํ
์ ์ฝ๊ฐ์ ์์(์์ง ์์) ์ค๋ฅ๋ฅผ ๊ฐ์งํ ์ ์์ต๋๋ค. ์ ํ์ ์ธ ์๋ ๊ฐ์ ์ฒ๋ฆฌํ๋ ๊ฒ์ ์์ด๋ฒ๋ฆฐ ๊ฒฝ์ฐ์
๋๋ค.
None
๋๋ ๋ค๋ฅธ ํน๋ณํ ์กฐ๊ฑด. - ์ฝ๋ ๋ฆฌํฉํ ๋ง์ ์ ํ ๊ฒ์ฌ ์์คํ ์ด ๋ณ๊ฒฝํด์ผ ํ๋ ์ฝ๋์ ๋ํด ์ข ์ข ๋งค์ฐ ์ ํํ๊ธฐ ๋๋ฌธ์ ํฌ๊ฒ ๋จ์ํ๋ฉ๋๋ค. ๋์์ ์ฐ๋ฆฌ๋ ํ ์คํธ๋ก 100% ์ฝ๋ ์ปค๋ฒ๋ฆฌ์ง๋ฅผ ๊ธฐ๋ํ ํ์๊ฐ ์์ต๋๋ค. ์ด๋ค ๊ฒฝ์ฐ์๋ ๋ณดํต์ ๋ถ๊ฐ๋ฅํฉ๋๋ค. ๋ฌธ์ ์ ์์ธ์ ์ฐพ๊ธฐ ์ํด ์คํ ์ถ์ ์ ๊น์ด๋ฅผ ์กฐ์ฌํ ํ์๊ฐ ์์ต๋๋ค.
- ๋๊ท๋ชจ ํ๋ก์ ํธ์์๋ mypy๋ ์ข ์ข ๋ช ๋ถ์ XNUMX์ด ๋ง์ ์ ์ฒด ์ ํ ๊ฒ์ฌ๋ฅผ ์ํํ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ํ ์คํธ ์คํ์๋ ์ผ๋ฐ์ ์ผ๋ก ์์ญ ์ด ๋๋ ๋ช ๋ถ์ด ๊ฑธ๋ฆฝ๋๋ค. ์ ํ ๊ฒ์ฌ ์์คํ ์ ํ๋ก๊ทธ๋๋จธ์๊ฒ ์ฆ๊ฐ์ ์ธ ํผ๋๋ฐฑ์ ์ ๊ณตํ๊ณ ์์ ์ ๋ ๋น ๋ฅด๊ฒ ์ํํ ์ ์๋๋ก ํฉ๋๋ค. ๊ทธ๋ ๋ ์ด์ ์ฝ๋ ํ ์คํธ ๊ฒฐ๊ณผ๋ฅผ ๋ ๋นจ๋ฆฌ ์ป๊ธฐ ์ํด ์ค์ ์ํฐํฐ๋ฅผ ๋ชจ์ ๊ฐ์ฒด์ ํจ์น๋ก ๋์ฒดํ๋ ๊นจ์ง๊ธฐ ์ฝ๊ณ ์ ์ง ๊ด๋ฆฌํ๊ธฐ ์ด๋ ค์ด ๋จ์ ํ ์คํธ๋ฅผ ์์ฑํ ํ์๊ฐ ์์ต๋๋ค.
PyCharm ๋๋ Visual Studio Code์ ๊ฐ์ IDE ๋ฐ ํธ์ง๊ธฐ๋ ์ ํ ์ฃผ์์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ฌ ๊ฐ๋ฐ์์๊ฒ ์ฝ๋ ์์ฑ, ์ค๋ฅ ๊ฐ์กฐ ํ์ ๋ฐ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋๋ ์ธ์ด ๊ตฌ์ฑ์ ๋ํ ์ง์์ ์ ๊ณตํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๊ฒ๋ค์ ํ์ดํ์ ์ด์ ์ค ์ผ๋ถ์ ๋ถ๊ณผํฉ๋๋ค. ์ผ๋ถ ํ๋ก๊ทธ๋๋จธ์๊ฒ๋ ์ด ๋ชจ๋ ๊ฒ์ด ํ์ดํ์ ์ ํธํ๋ ์ฃผ์ ๋ ผ๊ฑฐ์ ๋๋ค. ์ด๊ฒ์ ๊ตฌํ ์งํ์ ์ด์ ์ด ์๋ ๊ฒ์ ๋๋ค. ์ ํ์ ๋ํ ์ด ์ฌ์ฉ ์ฌ๋ก์๋ mypy์ ๊ฐ์ ๋ณ๋์ ์ ํ ๊ฒ์ฌ ์์คํ ์ด ํ์ํ์ง ์์ง๋ง mypy๋ ์ฝ๋์ ์ ํ ์ฃผ์์ ์ผ๊ด์ฑ์ ์ ์งํ๋ ๋ฐ ๋์์ด ๋๋ค๋ ์ ์ ์ ์ํด์ผ ํฉ๋๋ค.
mypy์ ๋ฐฐ๊ฒฝ
mypy์ ์ญ์ฌ๋ ์ ๊ฐ Dropbox์ ํฉ๋ฅํ๊ธฐ ๋ช ๋ ์ ์๊ตญ ์ผ์๋ธ๋ฆฌ์ง์์ ์์๋์์ต๋๋ค. ์ ๋ ๋ฐ์ฌ ๊ณผ์ ์ฐ๊ตฌ์ ์ผํ์ผ๋ก ์ ์ ์ผ๋ก ์ ๋ ฅ๋ ์ธ์ด์ ๋์ ์ธ์ด์ ํตํฉ์ ์ฐธ์ฌํ์ต๋๋ค. ์ ๋ Jeremy Siek๊ณผ Walid Taha์ ์ฆ๋ถ ํ์ดํ์ ๊ดํ ๊ธฐ์ฌ์ Typed Racket ํ๋ก์ ํธ์์ ์๊ฐ์ ๋ฐ์์ต๋๋ค. ์์ ์คํฌ๋ฆฝํธ์์ ์๋ฐฑ๋ง ์ค๋ก ๊ตฌ์ฑ๋ ์ฝ๋ ๋ฒ ์ด์ค์ ์ด๋ฅด๊ธฐ๊น์ง ๋ค์ํ ํ๋ก์ ํธ์ ๋์ผํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์ฐพ์ผ๋ ค๊ณ ๋ ธ๋ ฅํ์ต๋๋ค. ๋์์ ์ด๋ค ๊ท๋ชจ์ ํ๋ก์ ํธ์์๋ ๋๋ฌด ํฐ ํํ์ ํ ํ์๊ฐ ์๋๋ก ํ๊ณ ์ถ์์ต๋๋ค. ์ด ๋ชจ๋ ๊ฒ์ ์ค์ํ ๋ถ๋ถ์ ์ ํ์ด ์ง์ ๋์ง ์์ ํ๋กํ ํ์ ํ๋ก์ ํธ์์ ํฌ๊ด์ ์ผ๋ก ํ ์คํธ๋ ์ ์ ์ผ๋ก ์ ํ์ด ์ง์ ๋ ์์ ํ์ผ๋ก ์ ์ง์ ์ผ๋ก ์ด๋ํ๋ค๋ ์์ด๋์ด์์ต๋๋ค. ์์ฆ์ ์ด๋ฐ ์๊ฐ์ด ๋น์ฐํ๊ฒ ๋ฐ์๋ค์ฌ์ง์ง๋ง 2010๋ ์๋ ์ฌ์ ํ ํ๋ฐํ ํ๊ตฌ๋๊ณ ์๋ ๋ฌธ์ ์๋ค.
์ ํ ๊ฒ์ฌ์ ๋ํ ๋์ ์๋ ์์
์ Python์ ๋์์ผ๋ก ํ์ง ์์์ต๋๋ค. ๋์ ์์ "์ง์์ ๋ง๋ " ์ธ์ด๋ฅผ ์ฌ์ฉํ์ต๋๋ค.
def Fib(n as Int) as Int
if n <= 1
return n
else
return Fib(n - 1) + Fib(n - 2)
end
end
๋จ์ํ๋ ๋ชจ๊ตญ์ด๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๊ณผํ ์ฐ๊ตฌ์์ ์ฌ์ฉ๋๋ ์ผ๋ฐ์ ์ธ ์ ๊ทผ ๋ฐฉ์์ ๋๋ค. ์ด๋ ์คํ์ ์ ์ํ๊ฒ ์ํํ ์ ์๊ฒ ํด์ฃผ๊ณ ์ฐ๊ตฌ์ ๊ด๋ จ์ด ์๋ ๋ด์ฉ์ ์ฝ๊ฒ ๋ฌด์ํ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ค์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ ๊ตฌํ์ด ๋ณต์กํ ๋๊ท๋ชจ ํ์์ธ ๊ฒฝํฅ์ด ์์ผ๋ฉฐ ์ด๋ก ์ธํด ์คํ ์๋๊ฐ ๋๋ ค์ง๋๋ค. ๊ทธ๋ฌ๋ ๋จ์ํ๋ ์ธ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ ๊ฒฐ๊ณผ๋ ์ฝ๊ฐ ์์ฌ์ค๋ฌ์ ๋ณด์ ๋๋ค. ์ด๋ฌํ ๊ฒฐ๊ณผ๋ฅผ ์ป๋ ๊ณผ์ ์์ ์ฐ๊ตฌ์๊ฐ ์ธ์ด์ ์ค์ ์ฌ์ฉ์ ์ค์ํ ๊ณ ๋ ค ์ฌํญ์ ํฌ์ํ์ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
Alore์ ๋ํ ๋ด ์ ํ ๊ฒ์ฌ๊ธฐ๋ ๋งค์ฐ ์ ๋งํด ๋ณด์์ง๋ง Alore๋ก ์์ฑ๋์ง ์์ ์ค์ ์ฝ๋๋ฅผ ์คํํ์ฌ ํ ์คํธํ๊ณ ์ถ์์ต๋๋ค. ๋คํ์ค๋ฝ๊ฒ๋ Alore ์ธ์ด๋ ์ฃผ๋ก Python๊ณผ ๋์ผํ ์์ด๋์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ์ต๋๋ค. Python์ ๊ตฌ๋ฌธ ๋ฐ ์๋ฏธ ์ฒด๊ณ์ ํจ๊ป ์๋ํ ์ ์๋๋ก typechecker๋ฅผ ๋ค์ ๋ง๋๋ ๊ฒ์ ์ถฉ๋ถํ ์ฌ์ ์ต๋๋ค. ์ด๋ฅผ ํตํด ์คํ ์์ค Python ์ฝ๋์์ ์ ํ ๊ฒ์ฌ๋ฅผ ์๋ํ ์ ์์์ต๋๋ค. ๋ํ Alore๋ก ์์ฑ๋ ์ฝ๋๋ฅผ Python ์ฝ๋๋ก ๋ณํํ๋ ํธ๋์คํ์ผ๋ฌ๋ฅผ ์์ฑํ๊ณ ์ด๋ฅผ ์ฌ์ฉํ์ฌ ์ ํ์ ์ฒด์ปค ์ฝ๋๋ฅผ ๋ฒ์ญํ์ต๋๋ค. ์ด์ ์ ๋ Python์ ํ์ ์งํฉ, ์ผ์ข ์ ์ธ์ด๋ฅผ ์ง์ํ๋ Python์ผ๋ก ์์ฑ๋ ์ ํ ๊ฒ์ฌ ์์คํ ์ ๊ฐ๊ฒ ๋์์ต๋๋ค! (Alore์ ์ ํฉํ ํน์ ์ํคํ ์ฒ ๊ฒฐ์ ์ Python์ ์ ํฉํ์ง ์์์ผ๋ฉฐ ์ด๋ mypy ์ฝ๋๋ฒ ์ด์ค์ ์ผ๋ถ์์ ์ฌ์ ํ ๋์ ๋๋๋ค.)
์ฌ์ค, ๋ด ์ ํ ์์คํ ์์ ์ง์ํ๋ ์ธ์ด๋ ์ด ์์ ์์ Python์ด๋ผ๊ณ ๋ถ๋ฅผ ์ ์์์ต๋๋ค. Python 3 ์ ํ ์ฃผ์ ๊ตฌ๋ฌธ์ ์ผ๋ถ ์ ํ์ผ๋ก ์ธํด Python์ ๋ณํ์ด์์ต๋๋ค.
Java์ Python์ด ํผํฉ๋ ๊ฒ์ฒ๋ผ ๋ณด์์ต๋๋ค.
int fib(int n):
if n <= 1:
return n
else:
return fib(n - 1) + fib(n - 2)
๋น์ ๋ด ์์ด๋์ด ์ค ํ๋๋ ์ ํ ์ฃผ์์ ์ฌ์ฉํ์ฌ ์ด๋ฌํ ์ข ๋ฅ์ Python์ C ๋๋ ์๋ง๋ JVM ๋ฐ์ดํธ์ฝ๋๋ก ์ปดํ์ผํ์ฌ ์ฑ๋ฅ์ ๊ฐ์ ํ๋ ๊ฒ์ด์์ต๋๋ค. ์ปดํ์ผ๋ฌ ํ๋กํ ํ์ ์ ์์ฑํ๋ ๋จ๊ณ์ ์ด๋ฅด๋ ์ง๋ง ์ ํ ๊ฒ์ฌ ์์ฒด๊ฐ ๋งค์ฐ ์ ์ฉํด ๋ณด์๊ธฐ ๋๋ฌธ์ ์ด ์์ด๋์ด๋ฅผ ํฌ๊ธฐํ์ต๋๋ค.
๋๋ Santa Clara์์ ์ด๋ฆฐ PyCon 2013์์ ๋ด ํ๋ก์ ํธ๋ฅผ ๋ฐํํ๊ฒ ๋์์ต๋๋ค. ๋๋ ๋ํ ์์ ๋ก์ด ์ข ์ ๋ ์ฌ์ ๊ท๋ ๋ฐ ๋ก์ฌ๊ณผ๋ ์ด์ ๋ํด ์ด์ผ๊ธฐํ์ต๋๋ค. ๊ทธ๋ ๋ด ์์ ์ ๊ตฌ๋ฌธ์ ๋ฒ๋ฆฌ๊ณ ํ์ค Python 3 ๊ตฌ๋ฌธ์ ๊ณ ์ํ๋๋ก ์ค๋ํ์ต๋๋ค. Python 3์ ํจ์ ์ฃผ์์ ์ง์ํ๋ฏ๋ก ๋ด ์์ ๋ ์๋์ ๊ฐ์ด ๋ค์ ์์ฑ๋์ด ์ ์์ ์ธ Python ํ๋ก๊ทธ๋จ์ด ๋ ์ ์์ต๋๋ค.
def fib(n: int) -> int:
if n <= 1:
return n
else:
return fib(n - 1) + fib(n - 2)
๋๋ ์ฝ๊ฐ์ ํํ์ ํด์ผ ํ๋ค. ํนํ ๋น์ ์ธ์ด์ ์ต์ ๋ฒ์ ์ธ Python 3.3์ ๋ณ์ ์ฃผ์์ ์ง์ํ์ง ์์์ต๋๋ค. ๋๋ ์ด๋ฌํ ์ฃผ์์ ๊ตฌ๋ฌธ ์ค๊ณ์ ๋ํ ๋ค์ํ ๊ฐ๋ฅ์ฑ์ ์ ์ ๋ฉ์ผ๋ก Guido์ ๋ ผ์ํ์ต๋๋ค. ์ฐ๋ฆฌ๋ ๋ณ์์ ๋ํ ์ ํ ์ฃผ์์ ์ฌ์ฉํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. ์ด๊ฒ์ ์๋ํ ๋ชฉ์ ์ ๋ถํฉํ์ง๋ง ๋ค์ ๋ฒ๊ฑฐ๋ก์ ์ต๋๋ค(Python 3.6์ ๋ ๋์ ๊ตฌ๋ฌธ์ ์ ๊ณตํ์ต๋๋ค).
products = [] # type: List[str] # Eww
์ ํ ์ฃผ์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ํ ์ฃผ์์ ์ง์ํ์ง ์๋ Python 2๋ฅผ ์ง์ํ๋ ๋ฐ ์ ์ฉํ์ต๋๋ค.
f fib(n):
# type: (int) -> int
if n <= 1:
return n
else:
return fib(n - 1) + fib(n - 2)
์ด๋ฌํ (๋ฐ ๊ธฐํ) ์์ถฉ ๊ด๊ณ๋ ์ค์ ๋ก ์ค์ํ์ง ์์ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค. ์ ์ ํ์ดํ์ ์ด์ ์ ์ฌ์ฉ์๊ฐ ๊ณง ์ด์์ ์ด์ง ์์ ๊ตฌ๋ฌธ์ ์์ด๋ฒ๋ ธ๋ค๋ ๊ฒ์ ์๋ฏธํ์ต๋๋ค. ์ ํ ๊ฒ์ฌ Python ์ฝ๋์ ํน๋ณํ ๊ตฌ๋ฌธ ๊ตฌ์กฐ๊ฐ ์ฌ์ฉ๋์ง ์์๊ธฐ ๋๋ฌธ์ ๊ธฐ์กด Python ๋๊ตฌ ๋ฐ ์ฝ๋ ์ฒ๋ฆฌ ํ๋ก์ธ์ค๊ฐ ๊ณ์ ์ ์์ ์ผ๋ก ์๋ํ์ฌ ๊ฐ๋ฐ์๊ฐ ์ ๋๊ตฌ๋ฅผ ํจ์ฌ ์ฝ๊ฒ ๋ฐฐ์ธ ์ ์์ต๋๋ค.
๋ํ Guido๋ ์ ๊ฐ ๋ํ์ ๋ ผ๋ฌธ์ ๋ง์น ํ Dropbox์ ํฉ๋ฅํ๋๋ก ์ค๋ํ์ต๋๋ค. ์ด๊ฒ์ mypy ์ด์ผ๊ธฐ์ ๊ฐ์ฅ ํฅ๋ฏธ๋ก์ด ๋ถ๋ถ์ด ์์๋๋ ๊ณณ์ ๋๋ค.
๊ณ์ ๋ ...
๋ ์ ์ฌ๋ฌ๋ถ! Python์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์ด ์ธ์ด๋ก ๊ฐ๋ฐํ๋ ํ๋ก์ ํธ์ ๊ท๋ชจ์ ๋ํด ์๋ ค์ฃผ์ญ์์ค.
์ถ์ฒ : habr.com