4๋งŒ ์ค„์˜ Python ์ฝ”๋“œ๋ฅผ ์œ ํ˜• ๊ฒ€์‚ฌํ•˜๋Š” ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค. 3 ๋ถ€

Python ์ฝ”๋“œ์— ๋Œ€ํ•œ ์œ ํ˜• ๊ฒ€์‚ฌ ์‹œ์Šคํ…œ์„ ๊ตฌํ˜„ํ•  ๋•Œ Dropbox๊ฐ€ ์ทจํ•œ ๊ฒฝ๋กœ์— ๋Œ€ํ•œ ์ž๋ฃŒ ๋ฒˆ์—ญ์˜ ์„ธ ๋ฒˆ์งธ ๋ถ€๋ถ„์„ ์—ฌ๋Ÿฌ๋ถ„๊ป˜ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค.

4๋งŒ ์ค„์˜ Python ์ฝ”๋“œ๋ฅผ ์œ ํ˜• ๊ฒ€์‚ฌํ•˜๋Š” ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค. 3 ๋ถ€

โ†’ ์ด์ „ ๋ถ€๋ถ„: ์ฒ˜์Œ์œผ๋กœ ะธ ์ดˆ

4๋งŒ ์ค„์˜ ์ž…๋ ฅ ์ฝ”๋“œ ๋„๋‹ฌ

๋˜ ๋‹ค๋ฅธ ์ฃผ์š” ๊ณผ์ œ์ด์ž ๋‚ด๋ถ€ ์„ค๋ฌธ ์กฐ์‚ฌ์—์„œ ๋‘ ๋ฒˆ์งธ๋กœ ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ๊ด€์‹ฌ์‚ฌ๋Š” Dropbox์—์„œ ์œ ํ˜• ๊ฒ€์‚ฌ์— ํฌํ•จ๋˜๋Š” ์ฝ”๋“œ์˜ ์–‘์„ ๋Š˜๋ฆฌ๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ํ˜•์‹ํ™”๋œ ์ฝ”๋“œ๋ฒ ์ด์Šค์˜ ํฌ๊ธฐ๋ฅผ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋Š˜๋ฆฌ๋Š” ๊ฒƒ๋ถ€ํ„ฐ mypy ํŒ€์˜ ๋…ธ๋ ฅ์„ ์ •์  ๋ฐ ๋™์  ์ž๋™ ์œ ํ˜• ์ถ”๋ก ์— ์ง‘์ค‘ํ•˜๋Š” ๊ฒƒ๊นŒ์ง€ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ ๋‹จ์ˆœํ•œ ์Šน๋ฆฌ ์ „๋žต์€ ์—†๋Š” ๊ฒƒ ๊ฐ™์•˜์ง€๋งŒ, ์—ฌ๋Ÿฌ ์ ‘๊ทผ ๋ฐฉ์‹์„ ๊ฒฐํ•ฉํ•ด ์ฃผ์„ ์ฝ”๋“œ ์–‘์˜ ๊ธ‰์†ํ•œ ์„ฑ์žฅ์„ ์ด๋ฃฐ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๊ฒฐ๊ณผ์ ์œผ๋กœ ์šฐ๋ฆฌ์˜ ๊ฐ€์žฅ ํฐ Python ์ €์žฅ์†Œ(๋ฐฑ์—”๋“œ ์ฝ”๋“œ ํฌํ•จ)์—๋Š” ์ฃผ์„์ด ๋‹ฌ๋ฆฐ ์ฝ”๋“œ๊ฐ€ ๊ฑฐ์˜ 4๋งŒ ์ค„์— ๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ์ •์  ์ฝ”๋“œ ํƒ€์ดํ•‘ ์ž‘์—…์€ ์•ฝ XNUMX๋…„ ๋งŒ์— ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Mypy๋Š” ์ด์ œ ์ž…๋ ฅ ์ง„ํ–‰ ์ƒํ™ฉ์„ ๋” ์‰ฝ๊ฒŒ ๋ชจ๋‹ˆํ„ฐ๋งํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค์–‘ํ•œ ์œ ํ˜•์˜ ์ฝ”๋“œ ๋ฒ”์œ„ ๋ณด๊ณ ์„œ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ ์œ ํ˜•์˜ ๋ช…์‹œ์ ์ธ ์‚ฌ์šฉ๊ณผ ๊ฐ™์ด ์œ ํ˜•์ด ๋ชจํ˜ธํ•œ ์ฝ”๋“œ์— ๋Œ€ํ•œ ๋ณด๊ณ ์„œ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Any ํ™•์ธํ•  ์ˆ˜ ์—†๋Š” ์ฃผ์„ ๋˜๋Š” ์œ ํ˜• ์ฃผ์„์ด ์—†๋Š” ํƒ€์‚ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋“ฑ์˜ ๊ฒฝ์šฐ. Dropbox์˜ ์œ ํ˜• ๊ฒ€์‚ฌ ์ •ํ™•์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ํ”„๋กœ์ ํŠธ์˜ ์ผํ™˜์œผ๋กœ ์šฐ๋ฆฌ๋Š” ์ค‘์•™ ์ง‘์ค‘์‹ Python ์ €์žฅ์†Œ์— ์žˆ๋Š” ์ผ๋ถ€ ์ธ๊ธฐ ์˜คํ”ˆ ์†Œ์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์œ ํ˜• ์ •์˜(์†Œ์œ„ ์Šคํ… ํŒŒ์ผ)๋ฅผ ๊ฐœ์„ ํ•˜๋Š” ๋ฐ ๊ธฐ์—ฌํ–ˆ์Šต๋‹ˆ๋‹ค. ํƒ€์ž๊ธฐ.

์šฐ๋ฆฌ๋Š” ์ผ๋ถ€ ํŠน์ • Python ํŒจํ„ด์— ๋Œ€ํ•ด ๋ณด๋‹ค ์ •ํ™•ํ•œ ์œ ํ˜•์„ ํ—ˆ์šฉํ•˜๋Š” ์œ ํ˜• ์‹œ์Šคํ…œ์˜ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„(๋ฐ ํ›„์† PEP์—์„œ ํ‘œ์ค€ํ™”)ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•œ ์ฃผ๋ชฉํ• ๋งŒํ•œ ์˜ˆ๋Š” TypeDict์ด๋Š” ๊ฐ๊ฐ ๊ณ ์œ ํ•œ ์œ ํ˜•์˜ ๊ฐ’์„ ๊ฐ–๋Š” ๊ณ ์ •๋œ ๋ฌธ์ž์—ด ํ‚ค ์„ธํŠธ๊ฐ€ ์žˆ๋Š” JSON๊ณผ ์œ ์‚ฌํ•œ ์‚ฌ์ „์— ๋Œ€ํ•œ ์œ ํ˜•์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ณ„์†ํ•ด์„œ ์œ ํ˜• ์‹œ์Šคํ…œ์„ ํ™•์žฅํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ ๋‹จ๊ณ„๋Š” Python์˜ ์ˆ˜์น˜ ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์ง€์›์„ ๊ฐœ์„ ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

4๋งŒ ์ค„์˜ Python ์ฝ”๋“œ๋ฅผ ์œ ํ˜• ๊ฒ€์‚ฌํ•˜๋Š” ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค. 3 ๋ถ€
์ฃผ์„์ด ๋‹ฌ๋ฆฐ ์ฝ”๋“œ ์ค„ ์ˆ˜: ์„œ๋ฒ„

4๋งŒ ์ค„์˜ Python ์ฝ”๋“œ๋ฅผ ์œ ํ˜• ๊ฒ€์‚ฌํ•˜๋Š” ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค. 3 ๋ถ€
์ฃผ์„์ด ๋‹ฌ๋ฆฐ ์ฝ”๋“œ ์ค„ ์ˆ˜: ํด๋ผ์ด์–ธํŠธ

4๋งŒ ์ค„์˜ Python ์ฝ”๋“œ๋ฅผ ์œ ํ˜• ๊ฒ€์‚ฌํ•˜๋Š” ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค. 3 ๋ถ€
์ฃผ์„์ด ๋‹ฌ๋ฆฐ ์ฝ”๋“œ์˜ ์ด ์ค„ ์ˆ˜

Dropbox์—์„œ ์ฃผ์„์ด ์ถ”๊ฐ€๋œ ์ฝ”๋“œ์˜ ์–‘์„ ๋Š˜๋ฆฌ๊ธฐ ์œ„ํ•ด ์ˆ˜ํ–‰ํ•œ ์ž‘์—…์˜ ์ฃผ์š” ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ๊ฐœ์š”๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ฃผ์„ ์—„๊ฒฉํ•จ. ์šฐ๋ฆฌ๋Š” ์ƒˆ๋กœ์šด ์ฝ”๋“œ์— ์ฃผ์„์„ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐ ๋Œ€ํ•œ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ ์ฐจ์ ์œผ๋กœ ๊ฐ•ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด๋ฏธ ์ผ๋ถ€ ์ฃผ์„์ด ์žˆ๋Š” ํŒŒ์ผ์— ์ฃผ์„ ์ถ”๊ฐ€๋ฅผ ์ œ์•ˆํ•˜๋Š” Linter ํŒ๋ถ€ํ„ฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ์ƒˆ Python ํŒŒ์ผ๊ณผ ๋Œ€๋ถ€๋ถ„์˜ ๊ธฐ์กด ํŒŒ์ผ์— ์œ ํ˜• ์ฃผ์„์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๋ณด๊ณ ์„œ๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ํŒ€์˜ ์ฝ”๋“œ ์ž…๋ ฅ ์ˆ˜์ค€์— ๋Œ€ํ•œ ์ฃผ๊ฐ„ ๋ณด๊ณ ์„œ๋ฅผ ๋ณด๋‚ด๊ณ  ๋ฌด์—‡์— ๋จผ์ € ์ฃผ์„์„ ๋‹ฌ์•„์•ผ ํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ์กฐ์–ธ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๋งˆ์ดํ”ผ์˜ ๋Œ€์ค‘ํ™”. ์šฐ๋ฆฌ๋Š” ์ด๋ฒคํŠธ์—์„œ mypy์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ํŒ€๊ณผ ๋Œ€ํ™”ํ•˜์—ฌ ์œ ํ˜• ์ฃผ์„์„ ์‹œ์ž‘ํ•˜๋Š” ๋ฐ ๋„์›€์„ ์ค๋‹ˆ๋‹ค.

ํˆฌํ‘œ์†Œ. ๋‹น์‚ฌ๋Š” ์ฃผ์š” ๋ฌธ์ œ์ ์„ ํŒŒ์•…ํ•˜๊ธฐ ์œ„ํ•ด ์ •๊ธฐ์ ์ธ ์‚ฌ์šฉ์ž ์„ค๋ฌธ์กฐ์‚ฌ๋ฅผ ์‹ค์‹œํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ƒ๋‹นํ•œ ๋…ธ๋ ฅ์„ ๊ธฐ์šธ์ผ ์ค€๋น„๊ฐ€ ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค(mypy ์†๋„๋ฅผ ๋†’์ด๊ธฐ ์œ„ํ•ด ์ƒˆ๋กœ์šด ์–ธ์–ด๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ๊นŒ์ง€!).

์„ฑ๋Šฅ. ๋ฐ๋ชฌ๊ณผ mypyc๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ mypy์˜ ์„ฑ๋Šฅ์„ ํฌ๊ฒŒ ํ–ฅ์ƒ์‹œ์ผฐ์Šต๋‹ˆ๋‹ค. ์ด๋Š” Annotation ๊ณผ์ •์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๋ถˆํŽธํ•จ์„ ํ•ด์†Œํ•˜๊ณ , ๋งŽ์€ ์–‘์˜ ์ฝ”๋“œ ์ž‘์—…์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•˜๊ธฐ ์œ„ํ•จ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

ํŽธ์ง‘์ž์™€์˜ ํ†ตํ•ฉ. Dropbox์—์„œ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ํŽธ์ง‘๊ธฐ์—์„œ mypy ์‹คํ–‰์„ ์ง€์›ํ•˜๋Š” ๋„๊ตฌ๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” PyCharm, Vim ๋ฐ VS Code๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ฝ”๋“œ์— ์ฃผ์„์„ ๋‹ฌ๊ณ  ๊ธฐ๋Šฅ์„ ํ™•์ธํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ํฌ๊ฒŒ ๋‹จ์ˆœํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์œ ํ˜•์˜ ์ž‘์—…์€ ๊ธฐ์กด ์ฝ”๋“œ์— ์ฃผ์„์„ ๋‹ฌ ๋•Œ ์ผ๋ฐ˜์ ์ž…๋‹ˆ๋‹ค.

์ •์  ๋ถ„์„. ์šฐ๋ฆฌ๋Š” ์ •์  ๋ถ„์„ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•จ์ˆ˜ ์„œ๋ช…์„ ์ถ”๋ก ํ•˜๋Š” ๋„๊ตฌ๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋„๊ตฌ๋Š” ์ƒ๋Œ€์ ์œผ๋กœ ๊ฐ„๋‹จํ•œ ์ƒํ™ฉ์—์„œ๋งŒ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋งŽ์€ ๋…ธ๋ ฅ ์—†์ด๋„ ์ฝ”๋“œ ์œ ํ˜• ์ ์šฉ ๋ฒ”์œ„๋ฅผ ๋Š˜๋ฆฌ๋Š” ๋ฐ ๋„์›€์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

ํƒ€์‚ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ํ”„๋กœ์ ํŠธ์˜ ๋Œ€๋ถ€๋ถ„์€ SQLAlchemy ํˆดํ‚ท์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. PEP 484 ์œ ํ˜•์ด ์ง์ ‘ ๋ชจ๋ธ๋งํ•  ์ˆ˜ ์—†๋Š” Python์˜ ๋™์  ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” PEP 561์— ๋”ฐ๋ผ ํ•ด๋‹น ์Šคํ… ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ณ  mypy์šฉ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค(์˜คํ”ˆ ์†Œ์Šค), ์ด๋Š” SQLAlchemy ์ง€์›์„ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ๊ฒช์€ ์–ด๋ ค์›€

4๋งŒ ์ค„์˜ ์ž…๋ ฅ๋œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ณผ์ •์ด ํ•ญ์ƒ ์‰ฌ์šด ๊ฒƒ์€ ์•„๋‹ˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธธ์—์„œ ์šฐ๋ฆฌ๋Š” ๋งŽ์€ ์›€ํ‘น ๋“ค์–ด๊ฐ„ ๊ณณ์„ ๋งŒ๋‚ฌ๊ณ  ๋ช‡ ๊ฐ€์ง€ ์‹ค์ˆ˜๋ฅผ ์ €์งˆ๋ €์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์šฐ๋ฆฌ๊ฐ€ ์ง๋ฉดํ•œ ๋ช‡ ๊ฐ€์ง€ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๋Š” ๊ฒƒ์ด ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ๋น„์Šทํ•œ ๋ฌธ์ œ๋ฅผ ํ”ผํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

ํŒŒ์ผ์ด ์—†์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์•„์ฃผ ์ ์€ ์–‘์˜ ํŒŒ์ผ๋งŒ์„ ํ™•์ธํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ž‘์—…์„ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ํŒŒ์ผ์— ํฌํ•จ๋˜์ง€ ์•Š์€ ํ•ญ๋ชฉ์€ ํ™•์ธ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ์ฃผ์„์ด ๋‚˜ํƒ€๋‚  ๋•Œ ํŒŒ์ผ์ด ๊ฒ€์ƒ‰ ๋ชฉ๋ก์— ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฒ€์ฆ ๋ฒ”์œ„ ์™ธ๋ถ€์— ์žˆ๋Š” ๋ชจ๋“ˆ์—์„œ ๋ฌด์–ธ๊ฐ€๋ฅผ ๊ฐ€์ ธ์˜จ ๊ฒฝ์šฐ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฐ’์œผ๋กœ ์ž‘์—…ํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ–ˆ์Šต๋‹ˆ๋‹ค. Any, ์ „ํ˜€ ํ…Œ์ŠคํŠธ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ํŠนํžˆ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์ดˆ๊ธฐ ๋‹จ๊ณ„์—์„œ ์ž…๋ ฅ ์ •ํ™•๋„๊ฐ€ ํฌ๊ฒŒ ์ €ํ•˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์ธ ์ƒํ™ฉ์€ ๊ฒ€ํ†  ๋ฒ”์œ„์— ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ•˜๋ฉด ์ฝ”๋“œ๋ฒ ์ด์Šค์˜ ๋‹ค๋ฅธ ๋ถ€๋ถ„์—์„œ ๋ฌธ์ œ๊ฐ€ ๋“œ๋Ÿฌ๋‚˜๋Š” ๊ฒƒ์ด์ง€๋งŒ ์ด ์ ‘๊ทผ ๋ฐฉ์‹์€ ์ง€๊ธˆ๊นŒ์ง€ ๋†€๋ž๋„๋ก ์ž˜ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ตœ์•…์˜ ๊ฒฝ์šฐ, ์„œ๋กœ ๋…๋ฆฝ์ ์œผ๋กœ ์œ ํ˜•์ด ์ด๋ฏธ ๊ฒ€์‚ฌ๋œ ๋‘ ๊ฐœ์˜ ๊ฒฉ๋ฆฌ๋œ ์ฝ”๋“œ ์˜์—ญ์ด ๋ณ‘ํ•ฉ๋˜์—ˆ์„ ๋•Œ ์ด๋Ÿฌํ•œ ์˜์—ญ์˜ ์œ ํ˜•์ด ์„œ๋กœ ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ์ฃผ์„์„ ๋งŽ์ด ๋ณ€๊ฒฝํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ ๋Œ์ด์ผœ๋ณด๋ฉด ์šฐ๋ฆฌ๋Š” mypy์˜ ์œ ํ˜• ๊ฒ€์‚ฌ ์˜์—ญ์— ํ•ต์‹ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ชจ๋“ˆ์„ ๋” ๋นจ๋ฆฌ ์ถ”๊ฐ€ํ–ˆ์–ด์•ผ ํ–ˆ๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์šฐ๋ฆฌ ์ž‘์—…์ด ํ›จ์”ฌ ๋” ์˜ˆ์ธก ๊ฐ€๋Šฅํ•ด์ง‘๋‹ˆ๋‹ค.

์˜ค๋ž˜๋œ ์ฝ”๋“œ์— ์ฃผ์„์„ ๋‹ต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์‹œ์ž‘ํ–ˆ์„ ๋•Œ ๊ธฐ์กด Python ์ฝ”๋“œ๋Š” ์•ฝ 4๋งŒ ์ค„์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ชจ๋“  ์ฝ”๋“œ์— ์ฃผ์„์„ ๋‹ค๋Š” ๊ฒƒ์ด ์‰ฌ์šด ์ผ์ด ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ์€ ๋ถ„๋ช…ํ–ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ํ…Œ์ŠคํŠธ๊ฐ€ ์‹คํ–‰๋  ๋•Œ ์œ ํ˜• ์ •๋ณด๋ฅผ ์ˆ˜์ง‘ํ•˜๊ณ  ์ˆ˜์ง‘๋œ ์ •๋ณด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ฝ”๋“œ์— ์œ ํ˜• ์ฃผ์„์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” PyAnnotate๋ผ๋Š” ๋„๊ตฌ๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์šฐ๋ฆฌ๋Š” ์ด ๋„๊ตฌ๊ฐ€ ํŠน๋ณ„ํžˆ ๋„๋ฆฌ ์ฑ„ํƒ๋˜๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ์œ ํ˜• ์ •๋ณด ์ˆ˜์ง‘ ์†๋„๊ฐ€ ๋Š๋ ธ๊ณ , ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋œ ์ฃผ์„์„ ์ˆ˜๋™์œผ๋กœ ํŽธ์ง‘ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์•˜์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ฝ”๋“œ๋ฅผ ๊ฒ€ํ† ํ•  ๋•Œ๋งˆ๋‹ค ์ด ๋„๊ตฌ๋ฅผ ์ž๋™์œผ๋กœ ์‹คํ–‰ํ•˜๊ฑฐ๋‚˜ ์‹ค์ œ ๋„คํŠธ์›Œํฌ ์š”์ฒญ์˜ ์†Œ๋Ÿ‰ ๋ถ„์„์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์œ ํ˜• ์ •๋ณด๋ฅผ ์ˆ˜์ง‘ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ณ ๋ คํ–ˆ์ง€๋งŒ ๋‘ ๊ฐ€์ง€ ์ ‘๊ทผ ๋ฐฉ์‹ ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋„ˆ๋ฌด ์œ„ํ—˜ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ฒฐ๊ณผ์ ์œผ๋กœ ๋Œ€๋ถ€๋ถ„์˜ ์ฝ”๋“œ๋Š” ์†Œ์œ ์ž๊ฐ€ ์ˆ˜๋™์œผ๋กœ ์ฃผ์„์„ ์ถ”๊ฐ€ํ–ˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํ”„๋กœ์„ธ์Šค๋ฅผ ์˜ฌ๋ฐ”๋ฅธ ๋ฐฉํ–ฅ์œผ๋กœ ์•ˆ๋‚ดํ•˜๊ธฐ ์œ„ํ•ด ์ฃผ์„์„ ๋‹ฌ์•„์•ผ ํ•˜๋Š” ํŠนํžˆ ์ค‘์š”ํ•œ ๋ชจ๋“ˆ๊ณผ ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ๋ณด๊ณ ์„œ๋ฅผ ์ค€๋น„ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ˆ˜๋ฐฑ ๊ณณ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ชจ๋“ˆ์— ๋Œ€ํ•œ ์œ ํ˜• ์ฃผ์„์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ƒˆ๋กœ์šด ์„œ๋น„์Šค๋กœ ๊ต์ฒด๋˜๋Š” ๊ธฐ์กด ์„œ๋น„์Šค์—๋Š” ์ฃผ์„์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ๋” ์ด์ƒ ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์šฐ๋ฆฌ๋Š” ๋ ˆ๊ฑฐ์‹œ ์ฝ”๋“œ์— ๋Œ€ํ•œ ์œ ํ˜• ์ฃผ์„์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์ •์  ๋ถ„์„์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‹คํ—˜ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ฃผ๊ธฐ์  ์ˆ˜์ž…. ์œ„์—์„œ ๋‚˜๋Š” mypy์˜ ์†๋„๋ฅผ ๋†’์ด๋Š” ๊ฒƒ์„ ์–ด๋ ต๊ฒŒ ๋งŒ๋“œ๋Š” ์ˆœํ™˜ ๊ฐ€์ ธ์˜ค๊ธฐ("์ข…์†์„ฑ ์—‰ํ‚ด")์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ–ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋˜ํ•œ mypy๊ฐ€ ์ด๋Ÿฌํ•œ ์ˆœํ™˜ ๊ฐ€์ ธ์˜ค๊ธฐ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•˜๋Š” ๋ชจ๋“  ์ข…๋ฅ˜์˜ ๊ด€์šฉ์–ด๋ฅผ ์ง€์›ํ•˜๋„๋ก ์—ด์‹ฌํžˆ ๋…ธ๋ ฅํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ตœ๊ทผ ์ˆœํ™˜ ๊ฐ€์ ธ์˜ค๊ธฐ์™€ ๊ด€๋ จ๋œ ๋Œ€๋ถ€๋ถ„์˜ mypy ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ์ฃผ์š” ์‹œ์Šคํ…œ ์žฌ์„ค๊ณ„ ํ”„๋กœ์ ํŠธ๋ฅผ ์™„๋ฃŒํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋Š” ์‹ค์ œ๋กœ ํ”„๋กœ์ ํŠธ ์ดˆ๊ธฐ๋ถ€ํ„ฐ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, mypy ํ”„๋กœ์ ํŠธ๊ฐ€ ์›๋ž˜ ์ค‘์ ์„ ๋‘์—ˆ๋˜ ๊ต์œก ์–ธ์–ด์ธ Alore์—์„œ ๋น„๋กฏ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Alore ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜๋ฉด ์ˆœํ™˜ ๊ฐ€์ ธ์˜ค๊ธฐ ๋ช…๋ น ๊ด€๋ จ ๋ฌธ์ œ๋ฅผ ์‰ฝ๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ตœ์‹  mypy๋Š” ์ด์ „์˜ ๋‹จ์ˆœํ•œ ๊ตฌํ˜„(Alore์— ๋งค์šฐ ์ ํ•ฉํ•จ)์—์„œ ๋ช‡ ๊ฐ€์ง€ ์ œํ•œ ์‚ฌํ•ญ์„ ๋ฌผ๋ ค๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. Python์—์„œ๋Š” ํ‘œํ˜„์‹์ด ๋ชจํ˜ธํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ˆœํ™˜ ๊ฐ€์ ธ์˜ค๊ธฐ ์ž‘์—…์„ ์–ด๋ ต๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํ• ๋‹น ์ž‘์—…์€ ์‹ค์ œ๋กœ ์œ ํ˜• ๋ณ„์นญ์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ๊ฐ€์ ธ์˜ค๊ธฐ ๋ฃจํ”„๊ฐ€ ์ฒ˜๋ฆฌ๋  ๋•Œ๊นŒ์ง€ Mypy๊ฐ€ ํ•ญ์ƒ ์ด์™€ ๊ฐ™์€ ๊ฒƒ์„ ๊ฐ์ง€ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. Alore์—๋Š” ๊ทธ๋Ÿฌํ•œ ๋ชจํ˜ธํ•จ์ด ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ ๊ฐœ๋ฐœ ์ดˆ๊ธฐ ๋‹จ๊ณ„์—์„œ ๋‚ด๋ฆฐ ์ž˜๋ชป๋œ ๊ฒฐ์ •์€ ์ˆ˜๋…„ ํ›„ ํ”„๋กœ๊ทธ๋ž˜๋จธ์—๊ฒŒ ๋ถˆ์พŒํ•œ ๋†€๋ผ์›€์„ ์„ ์‚ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฒฐ๊ณผ: 5๋งŒ ์ค„์˜ ์ฝ”๋“œ์™€ ์ƒˆ๋กœ์šด ์ง€ํ‰์„ ํ–ฅํ•œ ๊ธธ

mypy ํ”„๋กœ์ ํŠธ๋Š” ์ดˆ๊ธฐ ํ”„๋กœํ† ํƒ€์ž…๋ถ€ํ„ฐ 4๋งŒ ๋ผ์ธ์˜ ์ƒ์‚ฐ ์ฝ”๋“œ ์œ ํ˜•์„ ์ œ์–ดํ•˜๋Š” โ€‹โ€‹์‹œ์Šคํ…œ์— ์ด๋ฅด๊ธฐ๊นŒ์ง€ ๋จผ ๊ธธ์„ ๊ฑธ์–ด์™”์Šต๋‹ˆ๋‹ค. mypy๊ฐ€ ๋ฐœ์ „ํ•˜๋ฉด์„œ Python์˜ ์œ ํ˜• ํžŒํŠธ๊ฐ€ ํ‘œ์ค€ํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์š”์ฆ˜ Python ์ฝ”๋“œ ์ž…๋ ฅ์„ ์ค‘์‹ฌ์œผ๋กœ ๊ฐ•๋ ฅํ•œ ์ƒํƒœ๊ณ„๊ฐ€ ๊ฐœ๋ฐœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ง€์› ๊ณต๊ฐ„์ด ์žˆ๊ณ , IDE ๋ฐ ํŽธ์ง‘๊ธฐ๋ฅผ ์œ„ํ•œ ๋ณด์กฐ ๋„๊ตฌ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉฐ, ๊ฐ๊ฐ ์žฅ๋‹จ์ ์ด ์žˆ๋Š” ์—ฌ๋Ÿฌ ์œ ํ˜• ์ œ์–ด ์‹œ์Šคํ…œ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

Dropbox์—์„œ๋Š” ์œ ํ˜• ๊ฒ€์‚ฌ๊ฐ€ ์ด๋ฏธ ์ œ๊ณต๋˜๊ณ  ์žˆ์ง€๋งŒ ์•„์ง์€ Python ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•˜๋Š” ์ดˆ๊ธฐ ๋‹จ๊ณ„์— ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์œ ํ˜• ๊ฒ€์‚ฌ ๊ธฐ์ˆ ์€ ๊ณ„์† ๋ฐœ์ „ํ•˜๊ณ  ๊ฐœ์„ ๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋Œ€๊ทœ๋ชจ Python ํ”„๋กœ์ ํŠธ์—์„œ ์œ ํ˜• ๊ฒ€์‚ฌ๋ฅผ ์•„์ง ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด ์ง€๊ธˆ์ด ์ •์  ์œ ํ˜• ์ง€์ •์œผ๋กœ ์ „ํ™˜ํ•˜๊ธฐ ๊ฐ€์žฅ ์ข‹์€ ์‹œ๊ธฐ๋ผ๋Š” ์ ์„ ์•Œ์•„ ๋‘์‹ญ์‹œ์˜ค. ๋‚˜๋Š” ๋น„์Šทํ•œ ์ „ํ™˜์„ ํ•œ ์‚ฌ๋žŒ๋“ค๊ณผ ์ด์•ผ๊ธฐ๋ฅผ ๋‚˜๋ˆด์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค ์ค‘ ๋ˆ„๊ตฌ๋„ ๊ทธ๊ฒƒ์„ ํ›„ํšŒํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์œ ํ˜• ๊ฒ€์‚ฌ๋ฅผ ํ†ตํ•ด Python์€ "์ผ๋ฐ˜ Python"๋ณด๋‹ค ๋Œ€๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ฐœ๋ฐœํ•˜๋Š” ๋ฐ ํ›จ์”ฌ ๋” ์ ํ•ฉํ•œ ์–ธ์–ด์ž…๋‹ˆ๋‹ค.

๋…์ž ์—ฌ๋Ÿฌ๋ถ„! Python ํ”„๋กœ์ ํŠธ์—์„œ ์œ ํ˜• ๊ฒ€์‚ฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๊นŒ?

4๋งŒ ์ค„์˜ Python ์ฝ”๋“œ๋ฅผ ์œ ํ˜• ๊ฒ€์‚ฌํ•˜๋Š” ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค. 3 ๋ถ€
4๋งŒ ์ค„์˜ Python ์ฝ”๋“œ๋ฅผ ์œ ํ˜• ๊ฒ€์‚ฌํ•˜๋Š” ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค. 3 ๋ถ€

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€